我寫了一個包含 1,000,000 行的 parquet 檔案。
當我讀回 parquet 檔案時,結果是 1,000,000 行。
df = spark.read.parquet(parquet_path)
df.count()
>>> 1000000
當我將鑲木地板檔案保存為 CSV,讀回它,然后計算行數時,輸出為 1,000,365。
df.write.csv(csv_path, sep='\t', header=False, mode='overwrite')
df_csv = spark.read.csv(csv_path, sep='\t', header=False)
df_csv.count()
>>> 1000365
為什么 Spark 將額外的列添加到資料集?
我嘗試了各種分隔符以及False標題True。
我也嘗試合并和重新磁區,但相同的數字不斷出現。
有誰知道為什么 Spark 會添加額外的列?
uj5u.com熱心網友回復:
讀取包含換行符的 csv 檔案時會發生這種情況。默認情況下,換行符將拆分為多個記錄。
要正確讀取多行 csv,您需要首先確保正確參考該欄位。
1,short text,"long text with newline\n quote within this field should be \"escaped\"."
雖然雙引號是默認值,但引號字符可以是雙引號以外的其他字符。
在此處檢查默認 csv 選項:https ://spark.apache.org/docs/latest/sql-data-sources-csv.html
然后,當您閱讀包含換行符 (\n) 的此 csv 檔案時。您需要添加multiLine=True選項。
spark.read.csv(csv_path, multiLine=True)
# or
spark.read.option('multiLine', True).csv(csv_path)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/472158.html
上一篇:僅顯示前20行
