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 文件时读取选定的列?