开发者社区> 问答> 正文

如何在pyspark中启用csv文件的多行读取

我正在通过PySpark阅读CSV文件。它是一个插入符号分隔的文件。它有5列。我只需要3列。

rdd = sc.textFile("test.csv").map(lambda x: x.split("^")).filter(lambda x: len(x)>1).map(lambda x: (x[0], x[2], x[3]))

print rdd.take(5)
如下所示,csv文件中的数据在第4条记录中有一个多行数据,最后一列只有一列。由于该文件只有5条记录,因此将spark视为6条记录。所以我面对索引超出范围错误。

file.csv中的数据:

a1^b1^c1^d1^e1
a2^b2^c2^d2^e2
a3^b3^c3^d3^e3
a4^b4^c4^d4 is
multiline^e4
a5^b5^c5^d5^e5
如何启用multilinewhile创建rdd通过sc.textFile()?

展开
收起
社区小助手 2018-12-12 14:11:16 2767 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    在我的分析中我发现,它不能通过sc.textFile()来完成,原因是我们只要将s3文件加载到rdd,然后rdd就会有一个元素列表作为s3文件的每个记录。在这个级别本身,多行中的每一行都被分成不同的记录。因此无法通过sc.textFile()实现。

    2019-07-17 23:20:10
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Data Wrangling with PySpark fo 立即下载
Data Wrangling with PySpark for Data Scientists Who Know Pandas 立即下载
File Format Benchmark - Avro, JSON, ORC, & Parquet 立即下载