1.map对RDD中的每个元素执行一个函数,然后返回新的RDD;
JavaSparkContext sc = new JavaSparkContext(conf);
List list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
JavaRDD intRDD = sc.parallelize(list);
intRDD.map(x -> x+1).foreach(f-> System.out.println(f));
2.过滤filter操作
对RDD中的每个元素执行条件判断,true返回,false过滤掉;
JavaRDD filterRDD = intRDD.filter(x->(x % 2 == 0));
filterRDD.foreach(x-> System.out.println(x));
3.flatMap
在flatMap()转换中,源RDD的一个元素映射到的一个或多个元素到目标RDD;并在每个源RDD的元素上执行一个函数,产生一个或多个输出。
返回一个迭代器;java.util.iterator;
JavaRDD stringRDD = sc.parallelize(Arrays.asList("Hello Spark","Hello Java"));
JavaRDD flatRDD = stringRDD.flatMap(t->Arrays.asList(t.split(" ")).iterator());
flatRDD.foreach(f->System.out.println(f));
4.mapToPair
与map类似,只不过是产生一个keyValue对的JavaPairRDD
List
JavaRDD
JavaPairRDD
Tuple2
5.flatMapToPair
类似flatMap只不过是keyValue键值对;返回iterator迭代器;
stringRDD.flatMapToPair( s->Arrays.asList(s.split(" ")).stream().map(token->new Tuple2
6.union合并
合并两个RDD,但不去重。
JavaRDD
intRDD.union(intRDD2);
7.求两个RDD的公共部分Intersection
intRDD.intersection(intRDD2);
8.去重RDD
将RDD的重复数据去掉,只保留一个。
JavaRDD
rddwithdupElements.distinct();
9.Cartesian笛卡尔积
JavaRDD
JavaRDD
rddStrings.cartesian(rddIntegers);
10.分组groupByKey
对PairRDD按key进行分组;
PairRDD.groupByKey(Partitioner partitioner)
groupbyKey转换与PairRDD一起工作(也就是说,RDD由(键、值)对组成)。它被用来对与键相关的所有值进行分组。它有助于转换由
11.聚合函数reduceByKey
对键值对进行按key分组统计
pairRDD.reduceByKey((v1, v2) -> v1 + v2);
同时可以设置分区:
reduceByKey(Partitioner partitioner,new Function2
12.按键值对键值对进行排序
JavaPairRDDunsortPairRDD = sc.parallelizePairs( Arrays.asList(new Tuple2 ("B", 2), new Tuple2 ("B", 5), new Tuple2 ("A", 7), new Tuple2 ("A", 8) ) ); //降序排序 unsortPairRDD.sortByKey(false).foreach( f-> System.out.println(f._1 + ", " + f._2) );
可以自定义比较对象
sortByKey(Comparator
13.Join连接
RDD1
JavaPairRDD
JavaPairRDDunsortPairRDD = sc.parallelizePairs( Arrays.asList(new Tuple2 ("B", 2), new Tuple2 ("A", 5), new Tuple2 ("B", 7), new Tuple2 ("A", 8) ) );
JavaPairRDDpairRDD1 = sc.parallelizePairs( Arrays.asList(new Tuple2 ("B","A"),new Tuple2 ("B","D"), new Tuple2 ("A","E"),new Tuple2 ("A","B")) ); JavaPairRDD > joinRDD = pairRDD1.join(unsortPairRDD); joinRDD.foreach(f-> System.out.println(f._1 + ", " + f._2._1 + ", " + f._2._2));