pyspark读取csv文件multiLine选项不适用于具有换行符spark2.3和spark2.2的记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyspark读取csv文件multiLine选项不适用于具有换行符spark2.3和spark2.2的记录相关的知识,希望对你有一定的参考价值。

我正在尝试使用pyspark csv reader读取dat文件,它包含换行符(“ n”)作为数据的一部分。 Spark无法将此文件作为单列读取,而是将其视为新行。我在阅读时尝试使用“multiLine”选项,但仍无效。

spark.read.csv(file_path, schema=schema, sep=delimiter,multiLine=True)

数据是这样的。这里$是vim中显示的换行符的CRLF。 name,test,12345,$ $ ,desc$ name2,test2,12345,$ $ ,desc2$ 所以pyspark将desc视为下一个记录。

如何在pyspark中读取此类数据。在spark2.2和spark2.3版本中尝试了这一点。

答案

我创建了自己的hadoop自定义记录阅读器,并能够通过调用api来阅读它。

spark.sparkContext.newAPIHadoopFile(file_path,'com.test.multi.reader.CustomFileFormat','org.apache.hadoop.io.LongWritable','org.apache.hadoop.io.Text',conf=conf)

并且在Custom Record Reader中实现了处理遇到的换行符的逻辑。

以上是关于pyspark读取csv文件multiLine选项不适用于具有换行符spark2.3和spark2.2的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

使用 PySpark 读取 CSV 时是不是可以仅覆盖一种列类型?

pyspark使用熊猫读取csv,如何保留标题

读取 CSV 后具有奇怪值的 Spark 数据帧

使用 pyspark 读取多个 csv 文件

在 pyspark 中以 csv 格式读取 excel 文件