scala - Spark数据框未正确将双引号写入csv文件
问题描述
我正在读取一个由管道(|)分隔的文件。在将数据读取和写入另一个文件时,有双引号的字段会产生问题。输入文件如下所示。
123|"ABC"|hello
124|"AB|hello all
125|A"B"|hellll
代码如下。
val myDf = session.sqlContext.read.format("csv")
.option("charset", "UTF8")
.option("inferSchema", "true")
.option("quote","\u0000")
.schema(mySchema)
.option("delimiter", "|")
.option("nullValue", "")
.option("treatEmptyValuesAsNulls", "true")
.load("path to file")
当我做 myDf.show() 在控制台中正确显示输出。但是当我将相同的数据框写入 CSV 文件时,所有双引号都被替换为\"
.
myDf.repartition(1).write
.format("com.databricks.spark.csv")
.option("delimiter", "|")
.save("Path to save file")
csv 文件中的输出:
123|"\"ABC\""|hello
124|"\"AB"|hello all
125|"A\"B\""|hellll
为什么会发生这种情况,有没有办法得到下面预期的 csv。
123|"ABC"|hello
124|"AB|hello all
125|A"B"|hellll
解决方案
可以通过禁用转义和引用来完成
myDf.repartition(1).write
.format("com.databricks.spark.csv")
.option("escape", "")
.option("quote", "")
.option("delimiter", "|")
.save("Path to save file")
推荐阅读
- raku - Perl 6 在清理对象时会自动调用任何特殊方法吗?
- regex - 结果中特定匹配的 XML 正则表达式替换
- javascript - 从对象进行 AES-CCM 解密的节点解密
- c# - 如何让图形打开然后在 C# 中执行命令脚本
- html - 输入类型=文本字段中的数据大小是否有限制?
- r - left_join 不合并所有值
- java - 简单java归档代码中的FileNotFound Exception错误
- python - 打开一个文本文件并转换为第一个字母为大写,其余为小写
- ubuntu - apt-get update 无法获取存储库
- scala - Scala:从导入创建函数列表