私はJavaPairRDD<Integer, List<String>>
に大きなリストを持っています。フラットマップを使ってリストエントリの可能な組み合わせをすべて得て、JavaPairRDD<Integer, Tuple2<String,String>>
になります。私は大きなリストFlatMap Java Spark
(1, ["A", "B", "C"])
のようなものを持っている基本的にあれば私が取得したい:
(1, <"A","B">) (1, <"A", "C">) (1, <"B", "C")
問題は、私が持っていることによってTuple2オブジェクトの大規模なリストを作成しているやっていることと、大きなリストであります入力リストのネストされたループ時々このリストは記憶に収まらない。私はこれを見つけましたが、Javaでそれを実装する方法がわからない:どのように大きなに依存
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());
}
});
感謝をスパーク永続性を使用することを試みることができます。 – ilijaluve