python - 如何在 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
如何multiline
在创建rdd
过程中启用sc.textFile()
?
解决方案
from pyspark.sql.session import SparkSession
spark = SparkSession(sc)
rdd = spark.read.csv("csv.csv", multiLine=True, header="False",sep = "^", escape= "\"")
推荐阅读
- c# - DataGrid - 在 CellEditEnding() 之后触发的事件
- python - 如何将 series.isin 与不同的集合一起使用以获得不同的值?
- ios - 当我们按下菜单点击时,CAPSPageMenu 获取索引
- react-native - Load customised font in react native
- reactjs - ReactJS使用foreach错误循环图像
- sql-server - 使用审计表跟踪用户活动
- c# - Tesseract OCR 没有正确分割线
- ios - viewDidAppear 延迟 0.5 秒
- c++ - 在混合的 C 和 C++ 代码中使用运算符 new
- c# - 在 MongoDB 上使用通用存储库的表达式转换错误