我在基于 Unix 的集群中運行 Apache Spark 3.1.2,為基于 Windows 的攝取系統準備 CSV 檔案。當 Windows 系統攝取集群的 Spark CSV 匯出創建的 CSV 檔案時,它無法決議 csv,因為新行是LF \nUnix 樣式的新行,而 Windows 系統需要CRLF \r\n樣式行結尾。
盡管在 unix 環境中運行,有沒有辦法配置 Apache Spark CSV 匯出器以使用基于 Windows 的新行撰寫?是否有一個可以在 CSV 寫入之后運行的 scala 工具,可以在匯出到 Windows 系統之前將檔案轉換為 Windows 換行符?
我看過,.option("lineSep", "\r\n")但我相信那只是為了閱讀。
uj5u.com熱心網友回復:
- 丑陋的解決方案 - 如果您的欄位沒有轉義,您可以將 \r 添加到最后一個欄位
- 仍然很難看 - 如果您的 csv 欄位不需要轉義 - 沒有奇怪的字符,您可以通過使用逗號連接所有列并在末尾添加 \r 并寫為文本來手動構建行
- 后處理 - 另存為 csv,讀取為文本,將 \r 添加到每一行并另存為文本。
- 如果檔案不是太大 - 我猜它們不是因為您要將它們轉移到另一臺機器進行處理,您可以使用 linux 工具添加 \r,
sed,perl, 或者只是unix2dosutil
uj5u.com熱心網友回復:
我不得不對檔案進行后處理。我將它合并到 1 個磁區并寫出 CSV,然后使用 Java BufferedReader 逐行加載檔案。我使用 BufferedOutputWriter 將輸入流逐行傳輸到寫入器中,在每行之間注入 \r\n ......太糟糕了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441158.html
上一篇:將多個結果保存到資料框中并將其轉換為pyspark中的csv檔案
下一篇:PysparkErrorwithreturn_compile(pattern,flags).findall(string)-如何排除故障?
