JSON dosyası
JSON dosyalarını tek satırlı veya çok satırlı modda okuyabilirsiniz. Tek satırlı modda bir dosya birçok bölüme bölünebilir ve paralel olarak okunabilir. Çok satırlı modda, bir dosya tüm varlık olarak yüklenir ve bölünemez .
Daha fazla bilgi için bkz . JSON Dosyaları.
Seçenekler
Desteklenen okuma ve yazma seçenekleri için aşağıdaki Apache Spark başvuru makalelerine bakın.
Kurtarılan veri sütunu
Dekont
Bu özellik Databricks Runtime 8.2 (desteklenmiyor) ve üzerinde desteklenir.
Kurtarılan veri sütunu, ETL sırasında verileri asla kaybetmenizi veya kaçırmamanızı sağlar. Kurtarılan veri sütunu, belirtilen şemada eksik olduğundan veya tür uyuşmazlığı olduğundan ya da kayıt veya dosyadaki sütunun büyük/küçük harfle şemadakiyle eşleşmediğinden ayrıştırılmamış verileri içerir. Kurtarılan veri sütunu, kurtarılan sütunları ve kaydın kaynak dosya yolunu içeren bir JSON blobu olarak döndürülür. Kurtarılan veri sütunundan kaynak dosya yolunu kaldırmak için SQL yapılandırmasını spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")
ayarlayabilirsiniz. kurtarılan veri sütununu etkinleştirmek için seçeneğini rescuedDataColumn
ile spark.read.option("rescuedDataColumn", "_rescued_data").format("json").load(<path>)
gibi _rescued_data
bir sütun adı olarak ayarlayabilirsiniz.
JSON ayrıştırıcısı kayıtları ayrıştırırken üç modu destekler: PERMISSIVE
, DROPMALFORMED
ve FAILFAST
. ile rescuedDataColumn
birlikte kullanıldığında, veri türü uyuşmazlıkları kayıtların modda DROPMALFORMED
bırakılmasına veya modda hata FAILFAST
oluşturmasına neden olmaz. Yalnızca bozuk kayıtlar (eksik veya hatalı biçimlendirilmiş JSON) bırakılır veya hata oluşturur. JSON ayrıştırırken seçeneğini badRecordsPath
kullanırsanız, kullanırken veri türü uyuşmazlıkları hatalı kayıt rescuedDataColumn
olarak kabul edilmez. yalnızca eksik ve yanlış biçimlendirilmiş JSON kayıtları içinde badRecordsPath
depolanır.
Örnekler
Tek satırlı mod
Bu örnekte, satır başına bir JSON nesnesi vardır:
{"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"}}
JSON verilerini okumak için şunu kullanın:
val df = spark.read.format("json").load("example.json")
Spark şemayı otomatik olarak çıkarsar.
df.printSchema
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)
Çok satırlı mod
Bu JSON nesnesi birden çok satır kaplar:
[
{"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"
}
}
]
Bu nesneyi okumak için çok satırlı modu etkinleştirin:
SQL
CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="/tmp/multi-line.json",multiline=true)
Scala
val mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(false)
Charset otomatik algılama
Varsayılan olarak, giriş dosyalarının karakter kümesi otomatik olarak algılanır. Charset'i şu seçeneği kullanarak charset
açıkça belirtebilirsiniz:
spark.read.option("charset", "UTF-16BE").format("json").load("fileInUTF16.json")
Desteklenen karakter kümelerinden bazıları şunlardır: , , , , , UTF-32BE
UTF-32LE
, UTF-32
. UTF-16
UTF-16LE
UTF-16BE
UTF-8
Oracle Java SE tarafından desteklenen karakter kümelerinin tam listesi için bkz . Desteklenen Kodlamalar.
Not defteri örneği: JSON dosyalarını okuma
Aşağıdaki not defterinde tek satırlı mod ve çok satırlı mod gösterilmektedir.