首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark-Csv写入报价不起作用

Spark-Csv写入报价不起作用
EN

Stack Overflow用户
提问于 2016-09-03 18:48:50
回答 7查看 23.9K关注 0票数 11

我正在尝试使用Spark-CSV (https://github.com/databricks/spark-csv)将DataFrame写成CSV文件。

我正在使用下面的命令

代码语言:javascript
复制
res1.write.option("quoteMode", "NONE").format("com.databricks.spark.csv").save("File")

但是我的CSV文件总是写成

“伦敦”

“哥本哈根”

“莫斯科”

而不是

伦敦

哥本哈根

莫斯科

EN

回答 7

Stack Overflow用户

发布于 2017-03-31 07:05:03

是。要使用反斜杠字符()关闭双引号字符(")的默认转义,必须在.write()方法调用之后添加一个带有正确参数的.option()方法调用。option()方法调用的目的是更改csv()方法“查找”“引号”字符的实例的方式。为此,您必须更改“引号”实际含义的默认值;即,将所寻找的字符从双引号字符(")更改为Unicode "\u0000“”字符(实质上提供了Unicode NUL character,这在格式良好的JSON文档中是不会出现的)。

代码语言:javascript
复制
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“的博客文章。

票数 17
EN

Stack Overflow用户

发布于 2018-04-12 09:16:34

通过将quoteAll选项设置为false,可以删除文本的双引号

代码语言:javascript
复制
dataframe.write
 .option("quoteAll", "false")
 .format("csv")

这个例子是按照Spark 2.1.0的要求,没有使用databricks库。

票数 5
EN

Stack Overflow用户

发布于 2017-07-26 22:58:18

如果你的DataFrame只有一个字符串,你可以直接写出一个文本文件。

代码语言:javascript
复制
df.coalesce(1).map({ k:Row => k(0).toString}).toJavaRDD.saveAsTextFile("File")

如果有多个列,则可以在写入输出文件之前将它们组合为单个字符串。

给出的其他答案可能导致在输出文件中发出不需要的空字符或空格字符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39306070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档