【发布时间】:2019-10-07 10:52:22
【问题描述】:
我正在读取一个由竖线 (|) 分隔的文件。在将数据读取和写入另一个文件时,有双引号的字段会产生问题。 输入文件如下。
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
【问题讨论】:
-
有一个稍微不同的问题 - 当使用 Coalesce 在 databrics 中创建 CSV 时 - 我的输出在每行的开头/结尾都有双引号。我已经有了 .option("quote", "") 。当其他人下载相同的代码时,他们不会得到这些双引号。试图找到另一段代码 - 或要更改的设置。
标签: scala csv apache-spark dataframe