我必须使用2个HashMap,我将它们分组为单个HashMap
Map<String, List<String>> map1 = new HashMap<>();
Map<String, List<String>> map2 = new HashMap<>();
Map<String, List<String>> result = new HashMap<>();
map1.keySet().stream().forEach(key -> {
List<String> val = result.get(key);
if (val == null) {
val = new ArrayList<String>();
result.put(key, val);
} else {
val.addAll(map1.get(key));
result.put(key, val);
}
});
map2.keySet().stream().forEach(key -> {
List<String> val = result.get(key);
if (val == null) {
val = new ArrayList<String>();
result.put(key, val);
} else {
val.addAll(map2.get(key));
result.put(key, val);
}
});
现在我想用apache spark做同样的事情并创建一个JavaPairRDD&gt; 。如果我有N个这样的Hashmaps并将它们分组到JavaPairRD&gt;如何实现呢? ?
答案 0 :(得分:0)
首先,您需要将每个HashMap转换为JavaPairRDD
。
为此,请将HashMap转换为Tuple2
数组并使用JavaSparkContext.parrallelizePairs
。
然后,执行所有union
的{{1}},这将为您提供一个JavaPairRDD
,其中包含您所有地图中的所有条目。
最后,您可以使用RDD
对条目进行分组,但这取决于您下一步要做什么,因为groupByKey
可能更好。