JSON文件

你可以讀入JSON文件單行的多行模式。在單行模式下,一個文件可以被分割成多個部分並並行讀取。在多行模式下,文件作為一個整體加載不能是分裂。

有關詳細信息,請參見JSON文件

選項

有關支持的讀寫選項,請參閱以下Apache Spark參考文章。

獲救數據列

請注意

中支持此特性Databricks Runtime 8.2(不支持)及以上。

獲救的數據列確保在ETL期間不會丟失或錯過數據。獲救的數據列包含任何未解析的數據,這可能是因為給定模式中缺少這些數據,也可能是因為類型不匹配,或者是因為記錄或文件中列的外殼與模式中的不匹配。獲救的數據列作為一個JSON blob返回,其中包含獲救的列和記錄的源文件路徑(源文件路徑在Databricks Runtime 8.3及以上版本中可用)。要從已保存的數據列中刪除源文件路徑,可以設置SQL配置spark.conf.set(“spark.databricks.sql.rescuedDataColumn.filePath.enabled”,“假”).可以通過設置該選項啟用已保存的數據列rescuedDataColumn到列名,例如_rescued_dataspark.read.option(“rescuedDataColumn”,“_rescued_data”).format (json) .load(<路徑>)

JSON解析器在解析記錄時支持三種模式:寬容的DROPMALFORMED,FAILFAST.當與rescuedDataColumn,數據類型不匹配不會導致記錄被刪除DROPMALFORMED模式或拋出錯誤FAILFAST模式。隻有損壞的記錄(即不完整或畸形的json)才會被丟棄或拋出錯誤。如果你使用這個選項badRecordsPath在解析JSON時,數據類型不匹配不被認為是壞記錄rescuedDataColumn.僅存儲不完整和格式錯誤的JSON記錄badRecordsPath

例子

單行模式

在這個例子中,每行有一個JSON對象:

“字符串”“string1”“int”1“數組”:[123.),“東西”“關鍵”“value1”}}“字符串”“string2相等”“int”2“數組”:[246),“東西”“關鍵”“value2”}}“字符串”“string3”“int”3.“數組”:[3.69),“東西”“關鍵”“value3”“extra_key”“extra_value3”}}

要讀取JSON數據,使用:

瓦爾df火花格式“json”).負載“example.json”

Spark自動推斷模式。

dfprintSchema
|--數組數組可以為空真正的||--元素containsNull真正的|--dict結構體可以為空真正的||--extra_key字符串可以為空真正的||--關鍵字符串可以為空真正的|--int可以為空真正的|--字符串字符串可以為空真正的

多行模式

這個JSON對象占用了多行:

“字符串”“string1”“int”1“數組”:[123.),“東西”“關鍵”“value1”}},“字符串”“string2相等”“int”2“數組”:[246),“東西”“關鍵”“value2”}},“字符串”“string3”“int”3.“數組”3.69),“東西”“關鍵”“value3”“extra_key”“extra_value3”

要讀取該對象,請啟用多行模式:

創建臨時視圖multiLineJsonTable使用json選項路徑“/ tmp / multi-line.json”多行真正的
瓦爾mdf火花選項“多行”“真正的”).格式“json”).負載“/ tmp / multi-line.json”mdf顯示

字符集顯

缺省情況下,自動檢測輸入文件的字符集。方法顯式指定字符集字符集選擇:

火花選項“字符集”“UTF-16BE”格式“json”負載“fileInUTF16.json”

一些支持的字符集包括:utf - 8UTF-16BEUTF-16LEutf - 16UTF-32BEUTF-32LEutf - 32.有關Oracle Java SE支持的字符集的完整列表,請參見支持的編碼

筆記本

下麵的筆記本演示了單線和多線模式。

閱讀JSON文件

在新標簽頁打開筆記本