Spark DataFrame无法将双引号正确写入csv文件

时间:2019-05-21 05:26:37

标签: scala csv apache-spark dataframe

我正在读取由竖线(|)分隔的文件。有些字段在将数据读取和写入另一个文件时会引起双引号。 输入文件如下。

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

1 个答案:

答案 0 :(得分:0)

可以同时禁用转义和引号

myDf.repartition(1).write
      .format("com.databricks.spark.csv")
      .option("escape", "")
      .option("quote", "")
      .option("delimiter", "|")
      .save("Path to save file")