我想将列表((A,1,2,3),(B,4,5,6),(C,7,8,9))
拆分为:
(A,1)
(A,2)
(A,3)
(B,4)
(B,5)
...
我试过rdd.flatMapValues(lambda x: [x])
,但它只给了我第一个值。然后我写了一个小python函数:
item_index = []
for list in master_list:
for item in list:
item_index.append((list[0],item))
但我没有意识到你无法将RDD
传递给它。任何建议都会很棒。
答案 0 :(得分:2)
正如您所说,您有rdd
[["A",1,2,3],["B",4,5,6],["C",7,8,9]]
master_list = sc.parallelize([["A",1,2,3],["B",4,5,6],["C",7,8,9]])
您可以flatMap
并进行一些迭代以获得所需的输出
master_list.flatMap(lambda x: [[x[0], x[i]] for i in range(1, len(x))])
您必须输出为
['A', 1]
['A', 2]
['A', 3]
['B', 4]
['B', 5]
['B', 6]
['C', 7]
['C', 8]
['C', 9]
我希望答案很有帮助