代码之家  ›  专栏  ›  技术社区  ›  Usman Azhar

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

  •  1
  • Usman Azhar  · 技术社区  · 7 年前

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

    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版本中都尝试了这一点。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Usman Azhar    6 年前

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

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

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