pyspark加入两个rdds并展平结果

杜伊

环境是pyspark,Spark版本2.2。

我们有两个rddstest1test2,以下是示例数据

test1 = [('a', 20), ('b', 10), ('c', 2)]
test2 = [('a', 2), ('b', 3)]

现在我们想生成output1如下,任何帮助都将受到赞赏。

[('a', 20, 2), ('b', 10, 3)]
保利

您可以通过简单地join调用map平坦化值来完成此操作

test1.join(test2).map(lambda (key, values): (key,) + values).collect()
#[('a', 20, 2), ('b', 10, 3)]

解释一下,结果join如下:

test1.join(test2).collect()
#[('a', (20, 2)), ('b', (10, 3))]

这几乎是所需的输出,但是您希望将结果展平。我们可以通过调用maptuple以所需格式返回一个新值来完成此操作该语法(key,)将仅使用键创建一个元素元组,并将其添加到值中。

您还可以使用DataFrame API,方法pyspark.sql.DataFrame.toDF()是将RDD转换为DataFrames:

test1.toDF(["key", "value1"]).join(test2.toDF(["key", "value2"]), on="key").show()
#+---+------+------+
#|key|value1|value2|
#+---+------+------+
#|  b|    10|     3|
#|  a|    20|     2|
#+---+------+------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章