【发布时间】:2019-09-22 21:51:00
【问题描述】:
我有一个以下格式的输入数据,我正在尝试拆分并创建一个键值对:
输入:
"SQL",1,2,3,4,5
"ORACLE",2,5,6,7
要写入 RDD 的预期数据:
SQL,1
SQL,2
SQL,3
SQL,4
SQL,5
ORACLE,2
ORACLE,5
ORACLE,6
ORACLE,7
我正在尝试使用以下不起作用的代码创建键值对
data_rdd = f.zipWithIndex() \
.map(lambda row: (row[0].replace('"', '').split(',')[0], (dst for dst in row[1:len(row[0])]))) \
.aggregateByKey([], lambda a, b: a + [b], lambda a, b: a + b)
【问题讨论】:
-
对于每一行
s,您可以申请:[(s.split(',')[0].replace('"', ''), i) for i in s.split(',')[1:]]并获取对元组列表。 -
我之前确实尝试过,如果我使用命令,我会得到一个未定义的行:data_rdd = f.zipWithIndex() \ .map(lambda row: (row[0].split(' ,')[0].replace('"', ''), i) for i in row.split(',')[1:]) \ .aggregateByKey([], lambda a, b: a + [ b], λ a, b: a + b)
标签: python python-3.x lambda pyspark rdd