gpt4 book ai didi

java - 合并两个 JavaPairRDD

转载 作者:行者123 更新时间:2023-12-01 12:21:51 25 4
gpt4 key购买 nike

我正在 java 中使用 Spark。我有一个名为 Out1JavaPairRDD

输出1:

IDCLIENT|INFO|    
1|A|
1|C|
1|H|
5|R|
2|B|

我想创建一个名为 Out2 的新 JavaPairRDD,它与 Out1 相同,但没有第一行:

输出2:

IDCLIENT2|INFO|    
1|C|
1|H|
5|R|
2|B|

之后,我想将这两个JavaPairRDD组合起来,如下所示:

输出3:

IDCLIENT|INFO|IDCLIENT2|
1|A,C|1|
1|C,H|1|
1|H,R|5|
5|R,B|2|
2|B| |

注意:我们不能使用groupByKey,因为我们可以在多行中使用相同的键。

最佳答案

RDD 中没有“删除”操作,因此删除一行比人们想象的要困难一些。

我会使用 zipWithIndex 并通过索引加入来实现它。它有点重,但可以完成工作:

val indexed1 = out1.zipWithIndex
val indexed2 = indexed1.map{(k,v) => ((k-1),v)}
val joined = indexed1 join indexed2
val out3 = joined.map{case (k,(v1,v2)) => format(v1,v2)}
// where format gets the values in the desired output layout

如果数据集适合内存,我只需执行一个简单的 Scala 'oneliner':

out1.zip(out1.drop(1)).map{case (o1, o2) => format(o1,o2)}

关于java - 合并两个 JavaPairRDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com