【问题标题】:Escape Backslash(/) while writing spark dataframe into csv在将 spark 数据帧写入 csv 时转义反斜杠(/)
【发布时间】:2020-07-25 01:01:24
【问题描述】:

我使用的是 spark 版本 2.4.0。我知道反斜杠是 spark 中的默认转义字符,但我仍然面临以下问题。 我正在将 csv 文件读入 spark 数据帧(使用 pyspark 语言)并将数据帧写回 csv。

我的源 csv 文件中有一些“//”(如下所述),其中第一个反斜杠表示转义字符,第二个反斜杠是实际值。

Test.csv(源数据)

Col1,Col2,Col3,Col4
1,"abc//",xyz,Val2
2,"//",abc,Val2

我正在阅读 Test.csv 文件并使用以下代码创建数据框:

df = sqlContext.read.format('com.databricks.spark.csv').schema(schema).option("escape", "\\").options(header='true').load("Test.csv")

并使用以下代码读取 df 数据帧并写回 Output.csv 文件:

df.repartition(1).write.format('csv').option("emptyValue", empty).option("header", "false").option("escape", "\\").option("path", 'D:\TestCode\Output.csv').save(header = 'true')

输出.csv

Col1,Col2,Col3,Col4
1,"abc//",xyz,Val2
2,/,abc,Val2

在 Output.csv 的第二行中,转义字符与引号 ("") 一起丢失。 我的要求是在 output.csv 中也保留转义字符。 任何形式的帮助都将不胜感激。

提前致谢。

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    看起来您正在使用默认行为.option("escape", "\\"),请将其更改为:

    .option("escape", "'")

    它应该可以工作。

    如果这能解决您的问题,请告诉我!

    【讨论】:

      猜你喜欢
      • 2018-01-15
      • 1970-01-01
      • 2016-11-16
      • 2015-05-19
      • 1970-01-01
      • 2015-09-21
      • 2011-11-09
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多