Spark:RDD.map/mapToPair 如何与 Java 一起工作
Spark: How RDD.map/mapToPair work with Java
我在文本文件中有一些 cw(整数 i,字符串字)对 i word 的出现次数。
我只想为每一对添加一个新的对 c1 (Integer i, 1) 和 1 个固定数字。
这看起来真的很琐碎,但我还没有理解 map/mapToPair 函数是如何工作的。
JavaPairRDD<Integer, Integer> c1 = cw.map(??? -> new Tuple2<Integer, Integer>(??, 1));
我正在使用 Java-8。
如果我没理解错的话,你有下面的 JavaPairRDD。
JavaPairRDD<Integer, String> cw = ...;
现在你想在第二个值为 1 的 JavaPairRDD 下面创建。
JavaPairRDD<Integer, Integer> c1;
为了得到这个,首先你必须从 cw
JavaPairRDD 中提取 JavaRDD,为此你必须调用 map
函数,如下所示。我们将从对中提取第一个值。
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));
简直……cw.mapValues(v -> 1);
来自 api 文档 JavaPairRDD.mapValues() ...
Pass each value in the key-value pair RDD through a map function
without changing the keys; this also retains the original RDD's
partitioning.
这是您可以尝试的方法:
JavaPairRDD<Integer, Integer> tuples = filtered.mapToPair(
f -> new Tuple2<Integer, Integer>(
Integer.parseInt(f[0]),
Integer.parseInt(f[1])
));
我在文本文件中有一些 cw(整数 i,字符串字)对 i word 的出现次数。
我只想为每一对添加一个新的对 c1 (Integer i, 1) 和 1 个固定数字。
这看起来真的很琐碎,但我还没有理解 map/mapToPair 函数是如何工作的。
JavaPairRDD<Integer, Integer> c1 = cw.map(??? -> new Tuple2<Integer, Integer>(??, 1));
我正在使用 Java-8。
如果我没理解错的话,你有下面的 JavaPairRDD。
JavaPairRDD<Integer, String> cw = ...;
现在你想在第二个值为 1 的 JavaPairRDD 下面创建。
JavaPairRDD<Integer, Integer> c1;
为了得到这个,首先你必须从 cw
JavaPairRDD 中提取 JavaRDD,为此你必须调用 map
函数,如下所示。我们将从对中提取第一个值。
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));
简直……cw.mapValues(v -> 1);
来自 api 文档 JavaPairRDD.mapValues() ...
Pass each value in the key-value pair RDD through a map function without changing the keys; this also retains the original RDD's partitioning.
这是您可以尝试的方法:
JavaPairRDD<Integer, Integer> tuples = filtered.mapToPair(
f -> new Tuple2<Integer, Integer>(
Integer.parseInt(f[0]),
Integer.parseInt(f[1])
));