CSV文件
本文提供了示例閱讀和寫作與磚使用Python的CSV文件,Scala, R, SQL。
與畸形的CSV記錄工作
當閱讀CSV文件指定的模式,可能是文件中的數據不匹配的模式。例如,字段包含城市名稱不解析為一個整數。結果取決於解析器運行的模式:
寬容的
(默認):null插入字段,不能正確解析DROPMALFORMED
:滴線包含字段不能被解析FAILFAST
:中止閱讀如果發現任何畸形數據
設置模式,使用模式
選擇。
diamonds_df=(火花。讀。格式(“csv”)。選項(“模式”,“寬容”)。負載(“/ databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv”))
在寬容的
模式可以檢查行不能正確解析使用下列方法之一:
您可以提供一個自定義的路徑選擇
badRecordsPath
記錄腐敗記錄到一個文件。您可以添加列
_corrupt_record
模式提供給DataFrameReader審查合成DataFrame腐敗記錄。
獲救的數據列
請注意
該特性支持磚運行時的8.3(不支持)及以上。
當使用寬容的
模式,您可以啟用獲救的數據列捕捉任何數據,沒有解析,因為一個或多個字段的記錄有以下問題:
缺席所提供的模式。
不匹配的數據類型提供了模式。
有一個情況不匹配的字段名稱提供模式。
獲救的數據列作為一個JSON返回包含列獲救的blob,和源文件路徑的記錄(源文件路徑可以在磚運行時8.3及以上)。刪除源文件路徑從獲救的數據列,您可以設置SQL配置spark.conf.set (“spark.databricks.sql.rescuedDataColumn.filePath.enabled”,“假”)
。您可以通過設置啟用獲救的數據列選項rescuedDataColumn
列名在讀取數據時,如_rescued_data
與spark.read.option (“rescuedDataColumn”,“_rescued_data”) .format (csv) .load(<路徑>)
。
當解析CSV解析器支持三種模式記錄:寬容的
,DROPMALFORMED
,FAILFAST
。一起使用時rescuedDataColumn
、數據類型不匹配不導致記錄被刪除DROPMALFORMED
模式或拋出一個錯誤FAILFAST
模式。腐敗的記錄是,不完整或畸形CSV-are下降或拋出錯誤。
當rescuedDataColumn
被用在寬容的
模式,適用於以下規則腐敗的記錄:
文件的第一行(標題行或數據行)設置預期行長度。
一行有不同的列數是不完整的。
數據類型不匹配不被認為是腐敗的記錄。
隻有不完整的和畸形的CSV記錄被認為是腐敗和記錄
_corrupt_record
列或badRecordsPath
。
例子
這些示例使用鑽石的數據集。指定的路徑數據集以及任何您希望的選項。
在本節中:
在任何語言閱讀文件
這個筆記本顯示如何讀取一個文件,顯示樣本數據,並打印數據模式使用Scala, R, Python和SQL。
指定模式
CSV文件的模式時,您可以指定到CSV讀者所需的模式模式
選擇。
陷阱的閱讀列的一個子集
CSV的解析器的行為取決於讀取的列集。如果指定的模式是不正確的,結果可能差別很大取決於訪問列的子集。以下筆記本禮物最常見的陷阱。