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

pyspark read csv file multiLine option not working for records which has newline spark2.3 and 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 自定义记录 Reader 并且能够通过调用 api 来读取它。

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

并在自定义记录中 Reader 实现了处理遇到的换行符的逻辑。