在Spark CSV中转义换行符读取

rea*_*883 2 python dataframe apache-spark pyspark

我正在使用Spark 2.2.1版本并使用以下python代码,可以转义@等特殊字符:我想转义特殊字符,例如newline(\ n)和回车(\ r)。我替换了\ n的@,但是没有用。有任何建议请。

工作方式:

spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="@")
Run Code Online (Sandbox Code Playgroud)

不起作用:

spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="\n")
Run Code Online (Sandbox Code Playgroud)

par*_*sni 6

如果您的目标是阅读包含多行换行符的文本内容的csv,那么方法是使用spark multiline option

我最近在那发布了一些scala代码。

val df = spark.read
.option("wholeFile", true)
.option("multiline",true)
.option("header", true)
.option("inferSchema", "true")
.option("dateFormat", "yyyy-MM-dd")
.option("timestampFormat", "yyyy-MM-dd HH:mm:ss")
.csv("test.csv")
Run Code Online (Sandbox Code Playgroud)

python语法会稍有不同,但应该可以正常工作。

  • 我有spark2.2,但仍然无法使用multiLine选项。 (2认同)
  • 即使将 multiLine 设置为 True,\r\n 组合仍然存在问题,即可以保留 \r。使用上面的读取语句,我看到最右边的列标题以 \r 结尾,最后一列中的一些行也以 \r 结尾。 (2认同)