【发布时间】:2020-01-28 05:35:30
【问题描述】:
读取标准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
而t.show 产生了预期的结果。
我需要反过来,编写标准 CSV 文件(不是非标准文件的目录)。
在使用write 时看不到相反的结果是非常令人沮丧的。也许存在其他选项或某种format (" REAL csv please! ")。
注意事项
我正在使用 Spark v2.2 并在 Spark-shell 上运行测试。
read 的“语法逆向”是write,因此预计会产生相同的文件格式。但是结果
t.write.format("csv").option("header", "true").save("file:///home/xyz/user/t-writed.csv")
不是rfc4180标准格式的CSV文件,和原来的t.csv一样,
但是带有文件的t-writed.csv/ 文件夹
part-00000-66b020ca-2a16-41d9-ae0a-a6a8144c7dbc-c000.csv.deflate _SUCCESS
这似乎是“镶木地板”、“ORC”或其他格式。
任何具有“读某些东西”的完整工具包的语言都能够“写东西”,它是一种orthogonality principle。
类似不解决
没有解决问题的类似问题或链接,可能使用了不兼容的 Spark 版本,或者 spark-shell 限制了使用它。他们为专家提供了很好的线索:
-
这个similar question pointed by @JochemKuijpers:我尝试了建议但得到了同样丑陋的结果。
-
This link 说有解决方案(!),但我无法在我的 spark-shell 中复制/粘贴
saveDfToCsv()(“错误:未找到:类型 DataFrame”) ,有什么线索吗?
【问题讨论】:
-
simple small and standard CSV file -
@IsmaelMiguel,对不起,我更正了问题的文字。我正在使用 CSV 文件进行读/写配置并发布(大数据)摘要的结果......小 CSV 文件,没有“大数据 CSV”。
-
very simple (one line)-> 请注意,将所有代码放在一行并不会使其更简单。通常,如果您创建包含多个语句或函数调用的行,它会更难阅读、理解和推理,而不是更容易。 -
@JochemKuijpers,有道理,我编辑了问题,这不是重点。
-
@PeterKrauss 你能举一个格式问题的例子吗?如果不复制设置,我们很难考虑这些。您需要 spark 以您喜欢的格式生成 CSV,还是可以对其进行后处理?
标签: apache-spark export-to-csv