【发布时间】:2015-11-10 13:09:23
【问题描述】:
我有两个 RDD - RDD1 和 RDD2,结构如下:
RDD1:
[(u'abc', 1.0), (u'cde', 1.0),....]
RDD2:
[3.0, 0.0,....]
现在我想形成第三个 RDD,它的值来自上述两个 RDD 的每个索引。所以上面的输出应该变成:
RDD3:
[(u'abc', 1.0,3.0), (u'cde', 1.0,0.0),....]
如您所见,来自 RDD2 的值已添加到 RDD1 的元组中。我怎样才能做到这一点?我试图做RDD3 = RDD1.map(lambda x:x).zip(RDD2),但它产生了这个输出 - [((u'abc', 1.0),3.0), ((u'cde', 1.0),0.0),....] 这不是我想要的,因为你可以看到 () 的 RDD1 和 RDD2 的值之间存在分隔。
注意:我的 RDD1 是使用 - RDD1 = data.map(lambda x:(x[0])).zip(val)
【问题讨论】:
-
使用后续映射创建所需的元组。
-
@Marcin 我做了
RDD3 = RDD1.map(lambda x:x).zip(RDD2)就像我在上面的帖子中提到的那样,但这并没有产生所需的输出 -
后续;您的地图也是无操作的,因为它应用了身份转换。
标签: python apache-spark ipython pyspark rdd