from_json函數

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

返回一個結構體的價值jsonStr模式

語法

from_json(jsonStr,模式(,選項])

參數

  • jsonStr指定一個json文檔:一個字符串表達式。

  • 模式:一個字符串表達式或調用schema_of_json函數

  • 選項:一個可選的地圖<字符串,字符串>文字指定指令。

之前磚12.2運行時模式必須是文字。

返回

一個結構體字段名稱和類型匹配的模式定義。

jsonStr應該是格式良好的對嗎模式選項模式必須定義為逗號分隔列名稱和數據類型對用於例如創建

選項如果提供,可以有下列:

  • primitivesAsString(默認):推斷所有原始值作為字符串類型。

  • prefersDecimal(默認):推斷所有浮點值作為一個十進製類型。如果在十進製值不符合,那麼它推斷雙打。

  • allowComments(默認):忽略了Java和c++風格的評論在JSON記錄。

  • allowUnquotedFieldNames(默認):允許非掛牌JSON字段名稱。

  • allowSingleQuotes(默認真正的):允許單引號除了雙引號。

  • allowNumericLeadingZeros(默認):允許前導零的數字(例如,00012年)。

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

  • allowUnquotedControlChars(默認):JSON字符串可以包含非掛牌控製字符(ASCII字符值小於32,包括選項卡並換行字符)。

  • 模式(默認寬容的):允許一個模式來處理腐敗記錄在解析。

    • 寬容的開會時:一個損壞的記錄,把畸形的字符串字段進行配置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):定義行分隔符應該用於解析。

  • samplingRatio1.0(默認):定義的輸入使用JSON對象模式推斷。

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

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

  • allowNonNumericNumbers(默認真正的):JSON解析器可以識別組不是一個數字()令牌作為合法的浮點數值:

    • +正+∞的別名+∞

    • 負無窮大),別名

    • 等其他not-a-numbers,除零的結果。

例子

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