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

问题描述 投票:1回答:1

我正在尝试使用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版本中尝试了这一点。

python-3.x apache-spark pyspark spark-dataframe
1个回答
0
投票

我创建了自己的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中实现了处理遇到的换行符的逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.