在pyspark中读取带有换行符的CSV

时间:2017-09-14 12:45:35

标签: python-3.x csv apache-spark pyspark

在pyspark中读取带有换行符的CSV 我想在pyspark中阅读“合法”(它跟随RFC4180)CSV,其中某些行中有分隔线(CRLF)。下一个代码示例显示了使用Notepad ++打开它时的效果:

enter image description here

我尝试使用 format ='com.databricks.spark.csv。并使用 sqlCtx.read.load 阅读它在这些特定情况下,数据集显示两行而不是一行。我使用的是Spark 2.1.0.2版本。

是否有任何命令或替代方式来读取csv,这使我只能将这两行读作一个?

2 个答案:

答案 0 :(得分:2)

您可以使用“csv”而不是Databricks CSV - 最后一个重定向到默认的Spark阅读器。但是,这只是一个提示:)

在Spark 2.2中添加了新选项 - wholeFile。如果你这样写:

spark.read.option("wholeFile", "true").csv("file.csv")

它将读取所有文件并处理多行CSV。

Spark 2.1中没有这样的选项。您可以使用sparkContext.wholeTextFile读取文件或只使用较新的版本

答案 1 :(得分:0)

wholeFile 在 spark api 文档中不存在(不再存在?): https://spark.apache.org/docs/2.2.0/api/python/pyspark.sql.html

此解决方案有效:

spark.read.option("multiLine", "true").csv("file.csv")

来自 api 文档:

multiLine – 解析可能跨越多行的记录。如果设置 None ,则使用默认值,false