from_csv函數

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

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

語法

from_csv(csvStr,模式(,選項])

參數

  • csvStr:一個字符串表達式指定行CSV數據。

  • 模式:一個字符串或調用schema_of_csv函數

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

返回

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

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

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

  • 9月(默認,):設置一個為每個字段和值分隔符。該分離器可以一個或多個字符。

  • 編碼(默認utf - 8):解碼的CSV文件指定的編碼類型。

  • 報價(默認):設置一個字符用於轉義引用值的分隔符可以是值。如果你想關閉報價,您需要設置不是零而是一個空字符串。這種行為是不同的com.databricks.spark.csv

  • 逃避(默認\):設置一個字符用於轉義引號裏麵已經引用價值。

  • charToEscapeQuoteEscaping(默認逃避\ 0):設置一個字符用於轉義引用字符的轉義。默認值是轉義字符逃避報價角色是不同的,\ 0否則。

  • 評論(默認空字符串):設置一個字符用於跳過這個角色開始。默認情況下,它是禁用的。

  • 頭(默認):使用第一行作為名稱的列。

  • enforceSchema(默認真正的):如果它被設置為true,強行指定或推斷模式應用於數據源文件,和標題在CSV文件中被忽略。如果選項設置為false,驗證了模式對所有標題在CSV文件中頭選項設置為true。字段名稱的模式和列名CSV頭檢查自己的立場考慮spark.sql.caseSensitive。盡管默認值是正確的,建議禁用enforceSchema選項來避免不正確的結果。

  • inferSchema(默認):輸入模式自動從數據推斷。它需要一個額外的數據傳遞。

  • samplingRatio1.0(默認):定義部分的行用於模式推斷。

  • ignoreLeadingWhiteSpace(默認):一個標誌指示是否領先的空白值讀取應該跳過。

  • ignoreTrailingWhiteSpace(默認):一個標誌指示是否尾隨的空格從值讀取應該跳過。

  • nullValue(默認空字符串):設置一個null值的字符串表示。

  • emptyValue(默認空字符串):設置一個空的字符串表示的值。

  • nanValue(默認):集non-number值的字符串表示。

  • positiveInf(默認):集正無窮值的字符串表示。

  • negativeInf(默認負無窮):設置一個負無窮值的字符串表示。

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

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

  • maxColumns(默認20480年):定義了一個硬限製多少列記錄。

  • maxCharsPerColumn(默認為1):定義的最大字符數允許任何指定的值被閱讀。默認情況下,它是1意味著無限的長度

  • unescapedQuoteHandling(默認STOP_AT_DELIMITER):定義CSV解析器如何處理值和保有的報價。

    • STOP_AT_CLOSING_QUOTE:如果保有的報價在輸入,積累援引性格和價值進行解析的引用值,直到找到關閉報價。

    • BACK_TO_DELIMITER:如果保有的報價在輸入,考慮到價值作為非上市價值。這將使當前的解析值的解析器積累所有字符,直到找到分隔符。如果沒有找到分隔符的值,解析器將繼續積累從輸入直到分隔符或行結束字符。

    • STOP_AT_DELIMITER:如果保有的報價在輸入,考慮到價值作為非上市價值。這將使解析器積累直到所有字符分隔符或找到一行結束輸入。

    • STOP_AT_DELIMITER:輸入,如果找到保有的報價內容解析指定的值是跳過和價值nullValue產生。

    • RAISE_ERROR:輸入,如果找到保有的報價TextParsingException拋出。

  • 模式(默認寬容的):允許一個模式來處理腐敗記錄在解析。它支持以下不區分大小寫的方式。火花試圖解析隻需要列在CSV列修剪。因此,腐敗記錄可以根據需要設置不同的字段。這種行為可以被控製的spark.sql.csv.parser.columnPruning.enabled(默認啟用)。

    • 寬容的開會時:一個損壞的記錄,把畸形的字符串字段進行配置columnNameOfCorruptRecord,畸形的字段設置為null。繼續腐敗記錄,一個名叫columnNameOfCorruptRecord的用戶可以設置一個字符串類型字段在一個用戶定義的模式。如果一個模式沒有字段,它滴腐敗在解析記錄。記錄用更少或更多的令牌比模式不是一個損壞的記錄到CSV。會議記錄令牌少於模式的長度,集零額外的字段。當記錄比模式的長度標記,它滴額外的令牌。

    • FAILFAST:開會時將拋出一個異常損壞的記錄。

  • columnNameOfCorruptRecord(缺省為指定的值spark.sql.columnNameOfCorruptRecord):允許重命名新領域有畸形的字符串創建的寬容的模式。這將覆蓋spark.sql.columnNameOfCorruptRecord

  • 多行(默認):解析一個記錄,這可能跨越多個行。

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

  • lineSep(默認覆蓋所有r \,\ r \ n,\ n):定義行分隔符應該用於解析。最大長度是1字符。

  • pathGlobFilter:一個可選的水珠模式隻包含文件路徑匹配模式。語法如下org.apache.hadoop.fs.GlobFilter。它不改變分區發現的行為。

例子

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