Pen*_*Sun 7 join apache-spark pyspark
假设
rdd1 = ( (a, 1), (a, 2), (b, 1) ),
rdd2 = ( (a, ?), (a, *), (c, .) ).
Run Code Online (Sandbox Code Playgroud)
想要生成
( (a, (1, ?)), (a, (1, *)), (a, (2, ?)), (a, (2, *)) ).
Run Code Online (Sandbox Code Playgroud)
任何简单的方法?我认为它与交叉连接不同但无法找到一个好的解决方案.我的解决方案是
(rdd1
.cartesian( rdd2 )
.filter( lambda (k, v): k[0]==v[0] )
.map( lambda (k, v): (k[0], (k[1], v[1])) ))
Run Code Online (Sandbox Code Playgroud)
dpe*_*ock 12
你只是在寻找一个简单的连接,例如
rdd = sc.parallelize([("red",20),("red",30),("blue", 100)])
rdd2 = sc.parallelize([("red",40),("red",50),("yellow", 10000)])
rdd.join(rdd2).collect()
# Gives [('red', (20, 40)), ('red', (20, 50)), ('red', (30, 40)), ('red', (30, 50))]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12229 次 |
| 最近记录: |