spark csv writer-不使用引号转义字符串

时间:2018-06-21 13:28:12

标签: csv apache-spark

我正在尝试转义出现在数据中的定界符。是否可以通过传递选项参数来实现?我可以通过udf做到这一点,但我希望可以使用选项。

val df = Seq((8, "test,me\nand your", "other")).toDF("number", "test", "t")
df.coalesce(1).write.mode("overwrite").format("csv").option("quote", "\u0000").option("delimiter", ",").option("escape", "\\").save("testcsv1")

但是逃脱功能不起作用。输出文件写为

8,test,me
and your,other

我希望将输出文件写为。

8,test\,me\\nand your,other

1 个答案:

答案 0 :(得分:0)

我不确定,但是我认为您的序列是否为

Seq((8, "test\\,me\\\\nand your", "other"))

并且未指定自定义转义字符,它将按照您的期望运行,并为您提供8,test\,me\\nand your,other作为输出。这是因为\\只是充当字符'\'而不是转义符,因此它们将打印在所需位置,并且紧随其后的n不会被解释为换行符的一部分。