我有JavaRDD<List<String>>
,我希望它成为JavaPairRDD<String, Integer>
,其中String是原始JavaRDD列表中包含的每个元素,而Integer是常量(1)。
有可能做那样的事吗?
PS:已经检查了this question,但没有帮助我。
答案 0 :(得分:1)
请使用flatMapToPair
JavaRDD<List<String>> rdd = ...;
JavaPairRDD<String, Integer> flatMapToPair = rdd.flatMapToPair(new PairFlatMapFunction<List<String>, String, Integer>() {
@Override
public Iterable<Tuple2<String, Integer>> call(List<String> t) throws Exception {
List<Tuple2<String, Integer>> result = new ArrayList<>();
for (String str : t) {
result.add(new Tuple2<>(str, 1));
}
return result;
}
});
答案 1 :(得分:1)
您可以使用:
JavaRDD<List<String>> listRdd = null; //assign
JavaPairRDD<String, Integer> rdd = listRdd.flatMap(list -> list)
.mapToPair(string -> new Tuple2<String, Integer>(string, 1));