CSV文件

本文提供了示例閱讀和寫作與磚使用Python的CSV文件,Scala, R, SQL。

請注意

您可以使用SQL來讀取CSV數據直接或通過使用一個臨時視圖。磚建議使用一個臨時視圖。直接閱讀CSV文件有以下缺點:

選項

你可以為CSV文件數據源配置幾個選項。看到下麵的Apache火花參考文章支持讀寫選項。

與畸形的CSV記錄工作

當閱讀CSV文件指定的模式,可能是文件中的數據不匹配的模式。例如,字段包含城市名稱不解析為一個整數。結果取決於解析器運行的模式:

  • 寬容的(默認):null插入字段,不能正確解析

  • DROPMALFORMED:滴線包含字段不能被解析

  • FAILFAST:中止閱讀如果發現任何畸形數據

設置模式,使用模式選擇。

diamonds_df=(火花格式(“csv”)選項(“模式”,“寬容”)負載(“/ databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv”))

寬容的模式可以檢查行不能正確解析使用下列方法之一:

  • 您可以提供一個自定義的路徑選擇badRecordsPath記錄腐敗記錄到一個文件。

  • 您可以添加列_corrupt_record模式提供給DataFrameReader審查合成DataFrame腐敗記錄。

請注意

badRecordsPath選擇優先於_corrupt_record,這意味著畸形行寫入路徑沒有出現在合成DataFrame提供。

畸形的默認行為記錄變更時使用獲救的數據列

發現畸形行筆記本

在新標簽頁打開筆記本

獲救的數據列

請注意

該特性支持磚運行時的8.3(不支持)及以上。

當使用寬容的模式,您可以啟用獲救的數據列捕捉任何數據,沒有解析,因為一個或多個字段的記錄有以下問題:

  • 缺席所提供的模式。

  • 不匹配的數據類型提供了模式。

  • 有一個情況不匹配的字段名稱提供模式。

獲救的數據列返回一個JSON文檔,其中包含的列已經獲救,和源文件路徑的記錄(源文件路徑可以在磚運行時8.3及以上)。刪除源文件路徑從獲救的數據列,您可以設置SQL配置spark.conf.set (“spark.databricks.sql.rescuedDataColumn.filePath.enabled”,“假”)。您可以通過設置啟用獲救的數據列選項rescuedDataColumn列名在讀取數據時,如_rescued_dataspark.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讀者所需的模式模式選擇。

閱讀筆記本CSV文件模式

在新標簽頁打開筆記本

例如:陷阱的閱讀列的一個子集

CSV的解析器的行為取決於讀取的列集。如果指定的模式是不正確的,結果可能差別很大取決於訪問列的子集。以下筆記本禮物最常見的陷阱。

說明閱讀的列一個CSV文件的筆記本的一個子集

在新標簽頁打開筆記本