当尝试将 6 列 pyspark RDD 映射到 4d 元组时,除了返回正常结果的 0 之外,任何列表元素都会出现列表超出范围错误。
数据集的结构如下:
X,Y,FID,DIVISION,LOCATION,PREC
-118.289241553,33.7576608970001,1,HARBOR,2175 JOHN S. GIBSON BLVD.,5
rdd3 = sc.textFile('hdfs://path/data.csv')
header3 = rdd3.first()
rdd3 = rdd3.filter(lambda line: line!=header3)\
.map(lambda row: row.split(","))\
.map(lambda row: (row[0],row[1],row[3],row[5])) \
.collect()
例如,如果我们只保留
row[0]
,则不会出现错误,但如果我们保留 row[1]
,则会抛出列表超出范围异常。就像 row.split(",")
没有返回 6 元素列表一样,而它应该返回。
有什么想法吗?
看起来您要解决的问题可以通过数据帧接口更好地解决:
df = spark_session.read.csv('hdfs://path/data.csv', header=True)
res = df.select('X', 'Y', 'DIVISION', 'PREC').collect()