New*_*101 7 apache-spark apache-spark-sql spark-dataframe
我正在尝试使用Spark-CSV将数据框架编写为CSV文件(https://github.com/databricks/spark-csv)
我正在使用下面的命令
res1.write.option("quoteMode", "NONE").format("com.databricks.spark.csv").save("File")
Run Code Online (Sandbox Code Playgroud)
但是我的CSV文件总是写成
"伦敦"
"哥本哈根"
"莫斯科"
代替
伦敦
哥本哈根
莫斯科
cha*_*ium 11
是.要使用反斜杠字符(\)关闭双引号字符(")的默认转义,必须在.write()方法调用之后使用正确的参数添加.option()方法调用. option()方法调用的方法是改变csv()方法"找到""quote"字符实例的方式.为此,你必须改变"quote"实际意味着的默认值;即改变所寻求的字符从双引号字符(")到Unicode"\ u0000"字符(基本上提供Unicode NUL字符,它不会出现在格式良好的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")
Run Code Online (Sandbox Code Playgroud)
这只是我学习尝试使用Apache Spark并发出.csv文件的几个课程中的一个.有关这方面的更多信息和上下文,请参阅我写的标题为" 示例Apache Spark ETL管道集成SaaS " 的博客文章.
可以通过将quoteAll选项设置为 false来删除文本的双引号
dataframe.write
.option("quoteAll", "false")
.format("csv")
Run Code Online (Sandbox Code Playgroud)
这个例子是按照 Spark 2.1.0 的,没有使用 databricks 库。
小智 -3
我可以通过将引用选项设置为单个空格来关闭它
df.coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").option("quote"," ").option("codec", "org.apache.hadoop.io.compress.GzipCodec").save("File path")
Run Code Online (Sandbox Code Playgroud)
但这只会替换用空格代替引号 (") 的选项
还有一种选择,即当定界符和分隔符相同时,引号通常作为限定符来分隔某些列
这样您就可以更改分隔符并自动删除引号
df.coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").option("delimiter", "|").option("codec", "org.apache.hadoop.io.compress.GzipCodec").save("File path")
Run Code Online (Sandbox Code Playgroud)
希望这适用于您的情况
| 归档时间: |
|
| 查看次数: |
11058 次 |
| 最近记录: |