gpt4 book ai didi

java - 大列表 FlatMap Java Spark

转载 作者:行者123 更新时间:2023-11-29 04:42:38 26 4
gpt4 key购买 nike

我在 JavaPairRDD<Integer, List<String>> 中有一个很大的列表我想做一个 flatMap 来获取列表条目的所有可能组合,这样我就可以得到 JavaPairRDD<Integer, Tuple2<String,String>> .基本上如果我有类似的东西

(1, ["A", "B", "C"])

我想得到:

(1, <"A","B">)
(1, <"A", "C">)
(1, <"B", "C")

问题在于大列表,因为我所做的是通过对输入列表进行嵌套循环来创建一个大的 Tuple2 对象列表。有时这个列表不适合内存。我找到了这个,但不确定如何在 Java 中实现它: Spark FlatMap function for huge lists

最佳答案

您可能想要flatMap 列表,然后在过滤相等值之前加入RDD 本身:

JavaPairRDD<Integer, List<String>> original = // ...
JavaPairRDD<Integer, String> flattened = original.flatMapValues(identity());
JavaPairRDD<Integer, Tuple2<String, String>> joined = flattened.join(flattened);
JavaPairRDD<Integer, Tuple2<String, String>> filtered =
joined.filter(new Function<Tuple2<Integer, Tuple2<String, String>>, Boolean> () {
@Override
public Boolean call(Tuple2<Integer, Tuple2<String, String>> kv) throws Exception {
return kv._2()._1().equals(kv._2()._2());
}
});

关于java - 大列表 FlatMap Java Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38574154/

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