開始
加載和管理數據
處理數據
政府
參考和資源
2023年2月17日更新
給我們反饋
from_csv
適用於:磚的SQL磚運行時
屬性返回一個結構值csvStr而且模式.
csvStr
模式
from_csv(csvStr,模式(,選項])
csvStr:指定一行CSV數據的STRING表達式。
模式的STRING字麵值或調用schema_of_csv函數.
選項:一個可選的MAP字麵值指定指令。
選項
具有匹配模式定義的字段名和類型的STRUCT。
csvStr對於模式而且選項.模式必須定義為逗號分隔的列名和數據類型對,例如創建表格.
創建表格
選項,如果提供,可以是以下任何一種:
9月(默認,):為每個字段和值設置分隔符。分隔符可以是一個或多個字符。
9月
,
編碼(默認UTF-8):按照指定的編碼類型對CSV文件進行解碼。
編碼
報價(默認"):設置一個用於轉義帶引號的值的單個字符,其中分隔符可以是值的一部分。如果你想關閉引號,你需要設置一個空字符串而不是null。這種行為不同於com.databricks.spark.csv.
報價
"
com.databricks.spark.csv
逃避(默認\):設置一個單獨的字符,用於轉義已加引號的值中的引號。
逃避
\
charToEscapeQuoteEscaping(默認逃避或\ 0):設置一個用於轉義引號字符的單個字符。默認值為轉義字符逃避而且報價人物不同,\ 0否則。
charToEscapeQuoteEscaping
\ 0
評論(默認空字符串):設置單個字符,用於跳過以該字符開頭的行。缺省情況下,關閉該功能。
評論
頭(默認假):使用第一行作為列的名稱。
假
enforceSchema(默認真正的):如果它被設置為true,指定的或推斷的模式將強製應用到數據源文件,並且忽略CSV文件中的頭文件。如果該選項設置為false,則在頭選項設置為true的情況下,將針對CSV文件中的所有頭驗證模式。模式中的字段名和CSV標題中的列名根據它們的位置進行檢查spark.sql.caseSensitive.盡管默認值為true,但建議禁用enforceSchema選項以避免錯誤的結果。
enforceSchema
真正的
spark.sql.caseSensitive
inferSchema(默認假):自動從數據中推斷輸入模式。它需要對數據進行一次額外的傳遞。
inferSchema
samplingRatio(默認1.0):定義用於模式推斷的行數。
samplingRatio
ignoreLeadingWhiteSpace(默認假):一個標誌,指示是否應該跳過正在讀取的值中的前導空白。
ignoreLeadingWhiteSpace
ignoreTrailingWhiteSpace(默認假):一個標誌,指示是否應該跳過從正在讀取的值中尾隨的空白。
ignoreTrailingWhiteSpace
nullValue(默認空字符串):設置null值的字符串表示形式。
nullValue
emptyValue(默認空字符串):設置空值的字符串表示形式。
emptyValue
nanValue(默認南):設置非數字值的字符串表示形式。
nanValue
南
positiveInf(默認正):設置正無窮大值的字符串表示形式。
positiveInf
正
negativeInf(默認負無窮):設置負無窮大值的字符串表示形式。
negativeInf
負無窮)
dateFormat(默認yyyy-MM-dd):設置表示日期格式的字符串。自定義日期格式遵循的格式Datetime模式.這適用於日期類型。
dateFormat
yyyy-MM-dd
timestampFormat(默認yyyy-MM-dd 'HH: mm: ss。SSS] [XXX]):設置表示時間戳格式的字符串。自定義日期格式遵循的格式Datetime模式.這適用於時間戳類型。
timestampFormat
yyyy-MM-dd 'HH: mm: ss。SSS] [XXX]
maxColumns(默認20480):定義一個記錄可以有多少列的硬限製。
maxColumns
20480
maxCharsPerColumn(默認值-1):定義讀取任何指定值所允許的最大字符數。缺省情況下,它是-1,表示不限製長度
maxCharsPerColumn
unescapedQuoteHandling(默認STOP_AT_DELIMITER):定義CSV解析器如何處理帶有未轉義引號的值。
unescapedQuoteHandling
STOP_AT_DELIMITER
STOP_AT_CLOSING_QUOTE:如果在輸入中發現未轉義的引號,則累積引號字符並繼續將值解析為帶引號的值,直到找到結束引號。
STOP_AT_CLOSING_QUOTE
BACK_TO_DELIMITER:如果在輸入中發現未轉義的引號,則將該值視為未加引號的值。這將使解析器累積當前已解析值的所有字符,直到找到分隔符為止。如果在值中沒有找到分隔符,解析器將繼續從輸入中積累字符,直到找到分隔符或行尾。
BACK_TO_DELIMITER
STOP_AT_DELIMITER:如果在輸入中發現未轉義的引號,則將該值視為未加引號的值。這將使解析器累積所有字符,直到在輸入中找到分隔符或行尾。
STOP_AT_DELIMITER:如果在輸入中發現未轉義的引號,則跳過為指定值解析的內容,並在其中設置值nullValue反而產生了。
RAISE_ERROR:如果在輸入中發現未轉義的引號,則aTextParsingException拋出。
RAISE_ERROR
TextParsingException
模式(默認寬容的):允許在解析過程中處理損壞記錄的模式。支持以下不區分大小寫的模式。Spark嚐試在列修剪下僅解析CSV中所需的列。因此,損壞的記錄可以根據所需的字段集而不同。這種行為可以由spark.sql.csv.parser.columnPruning.enabled(默認啟用)。
寬容的
spark.sql.csv.parser.columnPruning.enabled
寬容的:當它遇到損壞的記錄時,將畸形的字符串放入配置的字段中columnNameOfCorruptRecord,並將格式錯誤的字段設置為null。為了保存損壞的記錄,用戶可以在用戶定義的模式中設置一個名為columnNameOfCorruptRecord的字符串類型字段。如果模式沒有該字段,則在解析期間丟棄損壞的記錄。令牌比模式少或多的記錄不是已損壞的CSV記錄。當遇到標記少於模式長度的記錄時,將額外字段設置為null。當記錄的令牌多於模式長度時,它會刪除額外的令牌。
columnNameOfCorruptRecord
FAILFAST:當遇到損壞的記錄時拋出異常。
FAILFAST
columnNameOfCorruptRecord(默認值為spark.sql.columnNameOfCorruptRecord):允許重命名有畸形字符串創建的新字段寬容的模式。這將覆蓋spark.sql.columnNameOfCorruptRecord.
spark.sql.columnNameOfCorruptRecord
多行(默認假):解析一條記錄,該記錄可能跨越多行。
多行
語言環境(默認en - us):在IETF BCP 47格式中將區域設置為語言標記。例如,它在解析日期和時間戳時使用。
語言環境
en - us
lineSep(默認涵蓋所有r \,\ r \ n,\ n):定義用於解析的行分隔符。最大長度為1個字符。
lineSep
r \
\ r \ n
\ n
pathGlobFilter:一個可選的glob模式,隻包含路徑與模式匹配的文件。語法如下org.apache.hadoop.fs.GlobFilter.它不會改變分區發現的行為。
pathGlobFilter
org.apache.hadoop.fs.GlobFilter
> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');{1,0.8} > SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));{“時間”:2015-08-26就是}
from_json函數
schema_of_json函數
schema_of_csv函數
to_json函數
to_csv函數