Pyspark取消rdd

时间:2017-11-08 16:28:26

标签: pyspark rdd

我有一个具有以下结构的rdd: [int,[list]]

In [109]: rdd_dummies2.take(2)
[[0, [False, False, False, False, False, False, False, False, False, False]],
 [1, [False, False, False, False, False, False, False, False, False, False]]]

我想在同一个列表中使用另一个带有int和列表的rdd。 我的意思是,像这样:

[[0,False, False, False, False, False, False, False, False, False, False],
[1,False, False, False, False, False, False, False, False, False, False]]

我试过了:

In [110]: rdd_dummies2 = rdd_dummies.flatMap(lambda x: x)
In [112]: rdd_dummies2.take(2)
Out[112]: [0, [False, False, False, False, False, False, False, False, False, False]]

但它并没有归还我想要的东西。

有人知道如何正确使用.map()或.flatMap()吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您只需要映射rdd并将第一个元素添加到列表中:

rdd = sc.parallelize([[0, [False, False, False, False, False, False, False, False, False, False]], [1, [False, False, False, False, False, False, False, False, False, False]]])

rdd.map(lambda x: [x[0]] + x[1]).collect()
# [[0, False, False, False, False, False, False, False, False, False, False], 
#  [1, False, False, False, False, False, False, False, False, False, False]]