2016-04-14 66 views
0

有没有办法使用flatMap拼合列表中的RDD像这样:PySpark flatMap拼合名单列表

rdd = sc.parallelize([[1,2,3],[6,7,8]]) 

rdd.flatMap(lambda r: [[r[0],r[1],r[2],[r[2]+1,r[2]+2]]]).collect() 

我想要的输出:

[[1,2,3,4,5],[6,7,8,9,10]] 

实际输出:

[[1,2,3,[4,5]], [6,7,8,[9,10]]] 

我明白flatMap适当地变平的阵列,且我不困惑,所述一个以上的实际产出,但我想知道是否有办法有效地扁平内部列表。

回答

2

请修改您的代码如下图所示,以获得所需的输出

rdd.flatMap(lambda r: [[r[0],r[1],r[2],r[2]+1,r[2]+2]]).collect() 
+0

的一点是,我不能修改它的方式。我有一个如上所述的结构,并且我想在不调用列表理解的情况下将其扁平化。 –

+0

如果给定的答案不是你的预期,你能编辑和改进你的问题吗?目前还不清楚你打算做什么 – Mohan

+0

我想在问题中提出清单。给出一个看起来像'[1,2,3,[4,5]]'的列表,我想用pyspark中提供的工具将其平铺为'[1,2,3,4,5]'。 –