Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat membaca file JSON dalam mode baris tunggal atau multibaris. Dalam mode baris tunggal, sebuah file dapat dibagi menjadi banyak bagian dan dibaca secara paralel. Dalam mode multibaris, file dimuat sebagai sebuah entitas keseluruhan dan tidak dapat dibagi.
Untuk informasi selengkapnya, lihat dokumentasi Apache Spark di JSON Files.
Opsi
Lihat artikel referensi Apache Spark berikut untuk opsi baca dan tulis yang didukung.
Kolom data yang diselamatkan
Catatan
Fitur ini didukung di Databricks Runtime 8.2 ke atas.
Kolom data yang diselamatkan memastikan bahwa Anda tidak pernah kehilangan data selama ETL. Kolom data yang diselamatkan berisi data apa pun yang tidak diurai, baik karena hilang dari skema yang diberikan, atau karena ada ketidakcocokan jenis, atau karena casing kolom dalam rekaman atau file tidak cocok dengan yang ada dalam skema. Kolom data yang diselamatkan dikembalikan sebagai blob JSON yang berisi kolom yang diselamatkan dan jalur file sumber rekaman. Untuk menghapus path file sumber dari kolom data yang dipulihkan, atur konfigurasi SQL spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). Untuk mengaktifkan kolom data yang diselamatkan, atur opsi rescuedDataColumn ke nama kolom, seperti _rescued_data, dengan spark.read.option("rescuedDataColumn", "_rescued_data").format("json").load(<path>).
Pengurai JSON mendukung tiga mode saat mengurai baris: PERMISSIVE, DROPMALFORMED, dan FAILFAST. Ketika digunakan bersama dengan rescuedDataColumn, ketidakcocokan tipe data tidak menyebabkan penghapusan catatan dalam mode DROPMALFORMED atau menghasilkan kesalahan dalam mode FAILFAST. Hanya rekor yang korup—yaitu JSON yang tidak lengkap atau cacat—yang dihilangkan atau menimbulkan kesalahan. Jika Anda menggunakan opsi badRecordsPath saat mengurai JSON, ketidakcocokan jenis data tidak dianggap buruk saat menggunakan rescuedDataColumn. Hanya catatan JSON yang tidak lengkap dan cacat yang disimpan di badRecordsPath.
Contoh
Contoh berikut menunjukkan cara membaca dan menulis file JSON menggunakan DataFrame API dan SQL.
Mode baris tunggal
Setiap baris berisi satu objek JSON:
{"string":"string1","int":1,"array":[1,2,3],"dict": {"key": "value1"}}
{"string":"string2","int":2,"array":[2,4,6],"dict": {"key": "value2"}}
{"string":"string3","int":3,"array":[3,6,9],"dict": {"key": "value3", "extra_key": "extra_value3"}}
Untuk membaca data JSON, gunakan:
Python
df = spark.read.format("json").load("example.json")
df.printSchema()
Scala
val df = spark.read.format("json").load("example.json")
df.printSchema
Spark menyimpulkan skema secara otomatis:
root
|-- array: array (nullable = true)
| |-- element: long (containsNull = true)
|-- dict: struct (nullable = true)
| |-- extra_key: string (nullable = true)
| |-- key: string (nullable = true)
|-- int: long (nullable = true)
|-- string: string (nullable = true)
Mode banyak baris
Objek JSON berikut mencakup beberapa baris:
[
{ "string": "string1", "int": 1, "array": [1, 2, 3], "dict": { "key": "value1" } },
{ "string": "string2", "int": 2, "array": [2, 4, 6], "dict": { "key": "value2" } },
{
"string": "string3",
"int": 3,
"array": [3, 6, 9],
"dict": {
"key": "value3",
"extra_key": "extra_value3"
}
}
]
Untuk membaca objek ini, aktifkan mode multibaris:
Python
mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(truncate=False)
Scala
val mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(false)
SQL
CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="/tmp/multi-line.json",multiline=true)
Membaca file JSON menggunakan SQL
Anda dapat menggunakan read_files fungsi bernilai tabel fungsi bernilai tabel di SQL untuk membaca file JSON.
SELECT * FROM read_files(
'<path to json file or folder>',
format => 'json',
multiLine => true)
Anda juga dapat menggunakan USING JSON untuk membaca file JSON. Namun, Databricks merekomendasikan penggunaan read_files alih-alih USING JSON karena read_files memungkinkan spesifikasi skema dan opsi pemrosesan file tambahan.
DROP TABLE IF EXISTS json_data;
CREATE TABLE json_data
USING JSON
OPTIONS (path "/path/to/file.json", multiline true);
SELECT * FROM json_data;
Deteksi otomatis charset
Secara default, tataan karakter file input terdeteksi secara otomatis. Anda dapat menentukan tataan karakter secara eksplisit dengan menggunakan opsi charset:
spark.read.option("charset", "UTF-16BE").format("json").load("fileInUTF16.json")
Beberapa tataan karakter yang didukung meliputi: UTF-8, UTF-16BE, UTF-16LE, UTF-16, UTF-32BE, UTF-32LE, UTF-32. Untuk daftar lengkap charset yang didukung oleh Oracle Java SE, lihat Pengodean yang Didukung.
Contoh buku catatan: Membaca file JSON
Notebook berikut menunjukkan mode baris tunggal dan mode multibaris.
Membaca file JSON di notebook
Dapatkan buku catatan