gpt4 book ai didi

java - 将函数传递给 JavaPairRDD 中的 KEY

转载 作者:行者123 更新时间:2023-12-01 10:34:40 24 4
gpt4 key购买 nike

我正在使用适用于 Java 的 Spark API。我有一个 JavaPairRDD,其中键 k 被压缩为字节序列。我想将解压缩函数(我已经编写过)传递给 key (而不是值)。解压后键仍然是唯一的,我希望它们与相应的值 v 配对。

一种方法是 myHashMap = myPairRDD.collectAsMap() 然后 mySet = myHashMap.keySet() 但这样就不会再并行完成了键将与其值分离。

另一种方法是使用mySingleRDD = myPairRDD.keys(),但随后键将与其相应的值分离,v。

有没有人有更好的方法?

最佳答案

RDD 支持两种类型的操作:转换(从现有数据集创建新数据集)和操作(在运行数据集后将值返回给驱动程序)对数据集的计算。

对于所提出的问题,您应该使用 mapToPair ,这是一个转换,通过(解压缩)函数传递每个 JavaPairRDD 元素并返回一个新的 JavaPairRDD。
结果 RDD 上的每个键/值条目的类型为 Tuple2 <K, V> .
在此,我使用了 Tuple2<Object, Object>作为键/值,并且还假设您有键的 uncompress() 函数:

Java 8:

JavaPairRDD<Object, Object> result = pairRDD.mapToPair( 
(Tuple2<Object, Object> pair) -> new Tuple2<Object, Object>(uncompress(pair._1()), pair._2()));

Java 6/7:(无法避免非 lambda hell ...)

javaPair.mapToPair(new PairFunction<Tuple2<Object,Object>, Object, Object>() {
@Override
public Tuple2<Object, Object> call(Tuple2<Object, Object> pair) throws Exception {
return new Tuple2<Object, Object>(uncompress(pair._1()), pair._2());
}});

关于java - 将函数传递给 JavaPairRDD<K,V> 中的 KEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841512/

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