Apache Spark CSV 使用 Windows 换行符 (CRLF) 从 DataFrame 写入

发布于 2025-01-12 06:31:27 字数 429 浏览 0 评论 0原文

我在基于 Unix 的集群中运行 Apache Spark 3.1.2,为基于 Windows 的摄取系统准备 CSV 文件。当 Windows 系统摄取集群 Spark CSV 导出创建的 CSV 文件时,无法解析 csv,因为新行是 LF \n Unix 风格新行,而 Windows系统需要 CRLF \r\n 样式的行结尾。

有没有办法将 Apache Spark CSV 导出器配置为使用基于 Windows 的新行进行写入,尽管在 Unix 环境中运行?是否有一个 scala 工具可以在 CSV 写入后运行,可以在导出到 Windows 系统之前将文件转换为 Windows 新行?

我已经看到了 .option("lineSep", "\r\n") 但我相信这仅供阅读。

I'm running Apache Spark 3.1.2 in a Unix-based cluster to prepare CSV files for a Windows based ingestion system. When the Windows system ingests the CSV file created by the cluster's Spark CSV export, it fails to parse csv because the new lines are LF \n Unix Style new lines while the Windows system is expecting CRLF \r\n style line endings.

Is there a way to configure the Apache Spark CSV exporter to write with windows based new lines despite operating in a unix environment? Is there perhaps a scala tool that can be run after the CSV write that can convert the file to windows new lines before export to the windows system?

I've seen the .option("lineSep", "\r\n") but I believe that's for READING ONLY.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

日记撕了你也走了 2025-01-19 06:31:27
  1. 丑陋的解决方案 - 如果您的字段没有转义,您可以将 \r 添加到最后一个字段
  2. 仍然丑陋 - 如果您的 csv 字段不需要转义 - 没有奇怪的字符,您可以通过用逗号 add \r 连接所有列来手动构建行最后写入为文本
  3. 后处理 - 保存为 csv,读取为文本,在每行添加 \r 并保存为文本。
  4. 如果文件不太大 - 我猜它们不是因为你要把它们转移到另一台机器上进行处理,你可以使用linux工具添加\r,sedperl,或者只是 unix2dos util
  1. Ugly solution - if your fields are not escaped you can add \r to the last field
  2. Still ugly - if your csv fields don't need escaping - no strange characters, you can build the lines manually by joining all columns with comma add \r at the end and write as text
  3. postprocessing - save as csv, read as text, add \r to each line and save as text.
  4. if files not too big - I guess they are not as you are going to transfer them to another machine for processing, you can use linux tools to add \r, sed, perl, or just unix2dos util
归属感 2025-01-19 06:31:27

我必须对文件进行后处理。我将它合并到 1 个分区并写出 CSV,然后使用 Java BufferedReader 逐行加载文件。我使用 BufferedOutputWriter 将输入流逐行传输到编写器中,在每行之间注入 \r\n ...太蹩脚了。

I had to post-process the file. I coalesced it to 1 partition and wrote out the CSV, then used a Java BufferedReader to load the file line by line. I used a BufferedOutputWriter to then pipe the input stream line by line into the writer, injecting \r\n between each line... SO LAME.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文