编写数据帧

时间:2018-02-02 06:39:54

标签: csv apache-spark apache-spark-sql databricks

使用" com.databricks.spark.csv"编写数据帧时格式,转义选项不起作用它将默认转义字符作为引号(")。

通过关注this,我也尝试保留引用的字段,其中包含引号(")但仍然无效。

以下是我的输入数据文件(test.txt):

first , line
second " line
"third line"
fourth \n line
fifth \r line
sixth \ line
"seventh " line"

这是我的代码:

val rdd = sc.textFile("D:\\Users\\vipareek\\AdHoc\\test.txt")
val schema = new StructType()
      .add("col1", StringType)
val schemaRDD = rdd.map(x => Row(x.toString))
val df = sqlContext.createDataFrame(schemaRDD, schema)
df.coalesce(1).write.format("com.databricks.spark.csv")
      .option("header", "true")
      .option("quoteMode", "NON_NUMERIC")
      .option("escape", "\\")
      .save("D:\\Users\\vipareek\\Projects\\FCA\\Datastax\\AdHoc\\out")

最后,这是输出:

"col1"
"first , line"
"second "" line"
"""third line"""
"fourth \n line"
"fifth \r line"
"sixth \ line"
"""seventh "" line"""

根据" com.databricks.spark.csv的readme"在这个输出中,转义字符应该是\(反斜杠)而不是" (引用)(对于最后一行,即"第七"行")。

Spark版本 1.6.1

有人可以提出建议,我在这里遗漏了什么或使用不正确吗?

0 个答案:

没有答案