引言
spark 在讀取 csv 文件時,可能會涉及到很多參數設置,這篇文章總結了 option 里面的參數,希望能夠對你有所幫助
option 參數詳解
參數 | 解釋 |
---|---|
sep |
默認是, 指定單個字符分割字段和值 |
encoding |
默認是uft-8 通過給定的編碼類型進行解碼 |
quote |
默認是“ ,其中分隔符可以是值的一部分,設置用於轉義帶引號的值的單個字符。如果您想關閉引號,則需要設置一個空字符串,而不是null 。 |
escape |
默認(\ )設置單個字符用於在引號里面轉義引號 |
charToEscapeQuoteEscaping |
默認是轉義字符(上面的escape )或者\0 ,當轉義字符和引號(quote )字符不同的時候,默認是轉義字符(escape),否則為\0 |
comment |
默認是空值,設置用於跳過行的單個字符,以該字符開頭。默認情況下,它是禁用的 |
header |
默認是false ,將第一行作為列名 |
enforceSchema |
默認是true , 如果將其設置為true ,則指定或推斷的模式將強制應用於數據源文件,而CSV 文件中的標頭將被忽略。 如果選項設置為false ,則在header 選項設置為true 的情況下,將針對CSV文件中的所有標題驗證模式。模式中的字段名稱和CSV標頭中的列名稱是根據它們的位置檢查的,並考慮了*spark.sql.caseSensitive 。雖然默認值為true ,但是建議禁用 enforceSchema 選項,以避免產生錯誤的結果 |
inferSchema |
inferSchema(默認為 false`):從數據自動推斷輸入模式。 *需要對數據進行一次額外的傳遞 |
samplingRatio |
默認為1.0 ,定義用於模式推斷的行的分數 |
ignoreLeadingWhiteSpace |
默認為false ,一個標志,指示是否應跳過正在讀取的值中的前導空格 |
ignoreTrailingWhiteSpace |
默認為false 一個標志,指示是否應跳過正在讀取的值的結尾空格 |
nullValue |
默認是空的字符串,設置null值的字符串表示形式。從2.0.1開始,這適用於所有支持的類型,包括字符串類型 |
emptyValue |
默認是空字符串,設置一個空值的字符串表示形式 |
nanValue |
默認是Nan ,設置非數字的字符串表示形式 |
positiveInf |
默認是Inf |
negativeInf |
默認是-Inf 設置負無窮值的字符串表示形式 |
dateFormat |
默認是yyyy-MM-dd ,設置指示日期格式的字符串。自定義日期格式遵循java.text.SimpleDateFormat 中的格式。這適用於日期類型 |
timestampFormat |
默認是yyyy-MM-dd'T'HH:mm:ss.SSSXXX ,設置表示時間戳格式的字符串。自定義日期格式遵循java.text.SimpleDateFormat 中的格式。這適用於時間戳記類型 |
maxColumns |
默認是20480 定義多少列數目的硬性設置 |
maxCharsPerColumn |
默認是-1 定義讀取的任何給定值允許的最大字符數。默認情況下為-1,表示長度不受限制 |
mode |
默認(允許)允許一種在解析過程中處理損壞記錄的模式。它支持以下不區分大小寫的模式。請注意,Spark 嘗試在列修剪下僅解析CSV 中必需的列。因此,損壞的記錄可以根據所需的字段集而有所不同。可以通過spark.sql.csv.parser.columnPruning.enabled (默認啟用)來控制此行為。 |