我正在尝试使用Spark-CSV (https://github.com/databricks/spark-csv)将DataFrame写成CSV文件。
我正在使用下面的命令
res1.write.option("quoteMode", "NONE").format("com.databricks.spark.csv").save("File")但是我的CSV文件总是写成
“伦敦”
“哥本哈根”
“莫斯科”
而不是
伦敦
哥本哈根
莫斯科
发布于 2017-03-31 07:05:03
是。要使用反斜杠字符()关闭双引号字符(")的默认转义,必须在.write()方法调用之后添加一个带有正确参数的.option()方法调用。option()方法调用的目的是更改csv()方法“查找”“引号”字符的实例的方式。为此,您必须更改“引号”实际含义的默认值;即,将所寻找的字符从双引号字符(")更改为Unicode "\u0000“”字符(实质上提供了Unicode NUL character,这在格式良好的JSON文档中是不会出现的)。
val dataFrame =
spark.sql("SELECT * FROM some_table_with_a_json_column")
val unitEmitCsv =
dataframe
.write
.option("header", true)
.option("delimiter", "\t")
.option("quote", "\u0000") //magic is happening here
.csv("/FileStore/temp.tsv")这只是我在尝试使用Apache Spark和发出.csv文件时学到的几个课程中的一个。有关这方面的更多信息和背景,请参阅我写的题为"Example Apache Spark ETL Pipeline Integrating a SaaS“的博客文章。
发布于 2018-04-12 09:16:34
通过将quoteAll选项设置为false,可以删除文本的双引号
dataframe.write
.option("quoteAll", "false")
.format("csv")这个例子是按照Spark 2.1.0的要求,没有使用databricks库。
发布于 2017-07-26 22:58:18
如果你的DataFrame只有一个字符串,你可以直接写出一个文本文件。
df.coalesce(1).map({ k:Row => k(0).toString}).toJavaRDD.saveAsTextFile("File")如果有多个列,则可以在写入输出文件之前将它们组合为单个字符串。
给出的其他答案可能导致在输出文件中发出不需要的空字符或空格字符。
https://stackoverflow.com/questions/39306070
复制相似问题