مشاركة عبر


ملف 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-32LEUTF-32و. UTF-32BEUTF-16UTF-16LEUTF-16BEUTF-8 للحصول على القائمة الكاملة لمجموعات الأحرف المدعومة من Oracle Java SE، راجع الترميز المدعوم.

مثال دفتر الملاحظات: قراءة ملفات JSON

يوضح دفتر الملاحظات التالي وضع سطر واحد ووضع متعدد الأسطر.

قراءة دفتر ملاحظات ملفات JSON

الحصول على دفتر الملاحظات