import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
import java.util.Arrays;
import java.util.List;
/**
* groupByKey([numPartitions]) 算子:
* 将RDD中的算子按照key进行分组操作,所有的value形成一个Iterable。
* 输出格式为(key,[value1,value2 ...])
*
* 参数numPartitions是分区数,可以不设置,那就与原来分区相同。
* spark先对每一个分区的元素计算,最后在进行分区间的汇总计算。
*
* 下面的代码输出为:[(ty,[1, 3]), (tt,[2, 1]), (dd,[1, 2])]
*/
public class GroupByKeyDemo {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setMaster("local").setAppName("spark");
JavaSparkContext sc = new JavaSparkContext(conf);
List<Tuple2<String,Integer>> list = Arrays.asList(
new Tuple2<>("ty",1),
new Tuple2<>("dd",1),
new Tuple2<>("tt",2),
new Tuple2<>("dd",2),
new Tuple2<>("tt",1),
new Tuple2<>("ty",3)
);
JavaPairRDD<String,Integer> javaPairRDD = sc.parallelizePairs(list);
//groupByKey算子,设置分区为3
JavaPairRDD<String,Iterable<Integer>> javaPairRDD1 = javaPairRDD.groupByKey(3);
System.err.println(javaPairRDD1.collect());
}
}
Java Spark算子:groupByKey
最新推荐文章于 2024-11-14 16:48:32 发布

985

被折叠的 条评论
为什么被折叠?



