如何编写标准 CSV

2023-11-29

读起来非常简单标准 CSV文件,例如:

 val t = spark.read.format("csv")
 .option("inferSchema", "true")
 .option("header", "true")
 .load("file:///home/xyz/user/t.csv")

它读取一个真正的 CSV 文件,例如

   fieldName1,fieldName2,fieldName3
   aaa,bbb,ccc
   zzz,yyy,xxx

and t.show产生了预期的结果。

我需要逆,写入标准 CSV 文件(不是非标准文件的目录)。

当没有看到相反的结果时,这是非常令人沮丧的write用来。也许有其他选择或某种format (" REAL csv please! ") exists.


NOTES

我正在使用 Sparkv2.2并运行测试火花壳.

的“语法逆”read is write,因此预计会产生相同的文件格式用它。但结果是

   t.write.format("csv").option("header", "true").save("file:///home/xyz/user/t-writed.csv")

不是 CSV 文件rfc4180标准格式,与原始格式相同t.csv, but a t-writed.csv/包含该文件的文件夹part-00000-66b020ca-2a16-41d9-ae0a-a6a8144c7dbc-c000.csv.deflate _SUCCESS这似乎是“镶木地板”、“ORC”或其他格式。

任何具有“读某物”的完整工具包的语言都能够“写某物”,它是一种正交原理.

类似的没有解决

类似的问题或链接没有解决问题,可能使用了不兼容的 Spark 版本,或者可能火花外壳使用它的限制。他们为专家提供了很好的线索:

  • This @JochemKuijpers 指出的类似问题:我尝试建议但得到同样丑陋的结果。

  • 这个链接说有解决方案(!),但我无法复制/粘贴saveDfToCsv()在我的 Spark-Shell 中(“错误:未找到:类型 DataFrame”),有什么线索吗?


如果您使用 Spark 是因为您正在处理“大”* 数据集,那么您可能不想要类似的东西coalesce(1) or toPandas()因为这很可能会使你的驱动程序崩溃(因为整个数据集必须适合驱动程序 RAM,通常does not).

另一方面:如果你的数据does适合单台机器的 RAM - 为什么你要用分布式计算来折磨自己?

*定义有所不同。我个人的情况是“不适合Excel表格”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写标准 CSV 的相关文章

随机推荐