from_json函數

適用於:勾選“是”磚的SQL勾選“是”磚運行時

屬性返回一個結構值jsonStr而且模式

語法

from_jsonjsonStr模式[,選項])

參數

  • jsonStr:指定json文檔的STRING表達式。

  • 模式的STRING字麵值或調用schema_of_json函數

  • 選項:一個可選的MAP字麵值指定指令。

返回

具有與模式定義匹配的字段名和類型的結構。

jsonStr應該是有序的模式而且選項模式必須定義為逗號分隔的列名和數據類型對,例如創建表格

選項,如果提供,可以是以下任何一種:

  • primitivesAsString(默認):將所有基元值推斷為字符串類型。

  • prefersDecimal(默認):將所有浮點值推斷為十進製類型。如果值不適合十進製,則將它們推斷為雙精度。

  • allowComments(默認):忽略JSON記錄中的Java和c++風格注釋。

  • allowUnquotedFieldNames(默認):允許不帶引號的JSON字段名。

  • allowSingleQuotes(默認真正的):除了雙引號之外,還允許使用單引號。

  • allowNumericLeadingZeros(默認):允許在數字中使用前導零(例如,00012).

  • allowBackslashEscapingAnyCharacter(默認):允許使用反斜杠引用機製接受所有字符的引用。

  • allowUnquotedControlChars(默認):允許JSON字符串包含不帶引號的控製字符(值小於32的ASCII字符,包括製表符和換行符)。

  • 模式(默認寬容的):允許在解析過程中處理損壞記錄的模式。

    • 寬容的:當它遇到損壞的記錄時,將畸形的字符串放入配置的字段中columnNameOfCorruptRecord,並將格式錯誤的字段設置為null。要保存損壞的記錄,可以設置名為的字符串類型字段columnNameOfCorruptRecord在用戶定義的模式中。如果模式沒有該字段,則在解析期間丟棄損壞的記錄。在推斷模式時,它隱式地添加columnNameOfCorruptRecord字段。

    • FAILFAST:當遇到損壞的記錄時拋出異常。

  • columnNameOfCorruptRecord(默認值為spark.sql.columnNameOfCorruptRecord):允許重命名有畸形字符串創建的新字段寬容的模式。這將覆蓋spark.sql.columnNameOfCorruptRecord

  • dateFormat(默認yyyy-MM-dd):設置表示日期格式的字符串。自定義日期格式遵循的格式Datetime模式.這適用於日期類型。

  • timestampFormat(默認yyyy-MM-dd 'HH: mm: ss。SSS] [XXX]):設置表示時間戳格式的字符串。自定義日期格式遵循的格式Datetime模式.這適用於時間戳類型。

  • 多行(默認):每個文件解析一條記錄,該記錄可能跨越多行。

  • 編碼(默認不設置):允許強製設置JSON文件的標準基本編碼或擴展編碼之一。例如UTF-16BE, UTF-32LE。如果沒有指定編碼和多行設置為真正的,則自動檢測。

  • lineSep(默認涵蓋所有r \\ r \ n而且\ n):定義用於解析的行分隔符。

  • samplingRatio(默認1.0):定義用於模式推斷的輸入JSON對象的比例。

  • dropFieldIfAllNull(默認):模式推斷時是否忽略所有空值的列或空數組/結構。

  • 語言環境(默認是en - us):IETF BCP 47格式的locale作為語言標記。例如,它在解析日期和時間戳時使用。

  • allowNonNumericNumbers(默認真正的):允許JSON解析器識別一組非數字()令牌作為合法的浮點數值:

    • +正對於正無窮,以及的別名+∞而且

    • 對於負無窮),別名

    • 對於其他非a數,比如除以0的結果。

例子

>選擇from_json('{“a”:1、“b”:0.8}”,“一個INT, b雙”);{0.8} >選擇from_json('{“時間”:“26/08/2015”}’,“時間戳”,地圖(' timestampFormat ', ' dd / MM / yyyy '));{2015-08-26就是}