ملف JSON
يمكنك قراءة ملفات JSON في وضع سطر واحد أو متعدد الأسطر . في وضع السطر الواحد، يمكن تقسيم الملف إلى أجزاء عديدة وقراءته بالتوازي. في الوضع متعدد الأسطر، يتم تحميل ملف ككيان كامل ولا يمكن تقسيمه.
لمزيد من المعلومات، راجع ملفات JSON.
الخيارات
راجع مقالات مرجع Apache Spark التالية للحصول على خيارات القراءة والكتابة المدعومة.
عمود البيانات المنقذة
إشعار
هذه الميزة مدعومة في Databricks Runtime 8.2 (EoS) وما فوق.
يضمن عمود البيانات الذي تم إنقاذه عدم فقدان البيانات أو فقدانها أثناء ETL. يحتوي عمود البيانات الذي تم إنقاذه على أي بيانات لم يتم تحليلها، إما لأنها مفقودة من المخطط المحدد، أو بسبب عدم تطابق النوع، أو لأن غلاف العمود في السجل أو الملف لم يتطابق مع ذلك في المخطط. يتم إرجاع عمود البيانات الذي تم إنقاذه ككائن ثنائي كبير الحجم JSON يحتوي على الأعمدة التي تم إنقاذها، ومسار الملف المصدر للسجل. لإزالة مسار الملف المصدر من عمود البيانات المنقذة، يمكنك تعيين تكوين spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")
SQL . يمكنك تمكين عمود البيانات الذي تم إنقاذه عن طريق تعيين الخيار rescuedDataColumn
إلى اسم عمود، مثل _rescued_data
مع spark.read.option("rescuedDataColumn", "_rescued_data").format("json").load(<path>)
.
يدعم محلل JSON ثلاثة أوضاع عند تحليل السجلات: PERMISSIVE
و DROPMALFORMED
و.FAILFAST
عند استخدامها مع rescuedDataColumn
، لا تتسبب عدم تطابقات نوع البيانات في إسقاط السجلات في DROPMALFORMED
الوضع أو طرح خطأ في FAILFAST
الوضع. يتم إسقاط السجلات التالفة فقط - أي JSON غير المكتملة أو المشوهة - أو طرح الأخطاء. إذا كنت تستخدم الخيار badRecordsPath
عند تحليل JSON، فلن يتم اعتبار عدم تطابق نوع البيانات كسجلات سيئة عند استخدام rescuedDataColumn
. يتم تخزين سجلات JSON غير المكتملة والمضللة فقط في badRecordsPath
.
الأمثلة
وضع السطر الواحد
في هذا المثال، يوجد كائن 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"}}
لقراءة بيانات JSON، استخدم:
val df = spark.read.format("json").load("example.json")
يستنتج Spark المخطط تلقائيا.
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)
وضع متعدد الأسطر
يشغل كائن 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"
}
}
]
لقراءة هذا الكائن، قم بتمكين الوضع متعدد الأسطر:
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
بشكل افتراضي، يتم الكشف عن مجموعة ملفات الإدخال تلقائيا. يمكنك تحديد مجموعة الأحرف بشكل صريح باستخدام charset
الخيار :
spark.read.option("charset", "UTF-16BE").format("json").load("fileInUTF16.json")
تتضمن بعض مجموعات الأحرف المدعومة: و و و و و و UTF-32LE
UTF-32
و. UTF-32BE
UTF-16
UTF-16LE
UTF-16BE
UTF-8
للحصول على القائمة الكاملة لمجموعات الأحرف المدعومة من Oracle Java SE، راجع الترميز المدعوم.
مثال دفتر الملاحظات: قراءة ملفات JSON
يوضح دفتر الملاحظات التالي وضع سطر واحد ووضع متعدد الأسطر.