我在文本文件中有一些cw(Integer i,String word)和 i word 的出现次数。
我想简单地为每对配对一个固定数字的新对c1(整数i,1)。
这似乎真的微不足道,但我还没有理解map / mapToPair功能如何实际运作。
JavaPairRDD<Integer, Integer> c1 = cw.map(??? -> new Tuple2<Integer, Integer>(??, 1));
我正在使用Java-8。
答案 0 :(得分:5)
如果我理解正确,你的JavaPairRDD低于。
JavaPairRDD<Integer, String> cw = ...;
现在,您要在JavaPairRDD下创建第二个值为1。
JavaPairRDD<Integer, Integer> c1;
为了实现这一目标,首先必须从cw
JavaPairRDD中提取JavaRDD,为此您必须调用map
函数,如下所示。我们将从pair中提取第一个值。
JavaRDD<Integer> cw1 = cw.map(tuple -> tuple._1());
现在,您将使用mapToPair
函数从JavaRDD创建新的JavaPairRDD。
JavaPairRDD<Integer, Integer> c1 = cw1.mapToPair(i -> new Tuple2<Integer, Integer>(i, 1));
在单行中你可以像
一样写JavaPairRDD<Integer, Integer> c1 = cw.map(tuple -> tuple._1()).mapToPair(i -> new Tuple2<Integer, Integer>(i, 1));
答案 1 :(得分:0)
这是你可以尝试的:
JavaPairRDD<Integer, Integer> tuples = filtered.mapToPair(
f -> new Tuple2<Integer, Integer>(
Integer.parseInt(f[0]),
Integer.parseInt(f[1])
));
答案 2 :(得分:-1)
简单地说...... cw.mapValues(v -> 1);
来自JavaPairRDD.mapValues()的api文档...
通过map函数传递键值对RDD中的每个值 不改变钥匙;这也保留了原始的RDD 分区。