赞
踩
def main(args:Array[String]){
// 1. 创建 SparkConf对象, 并设置 App名字
val conf:SparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount");
// 2. 创建SparkContext对象
val sc = new SparkContext(conf);
// 3. 使用sc创建RDD并执行操作
val res1 = sc.parallelize(Array(1,2,3,4),2);
val res2 = sc.parallelize(Array(1,1,3,5),2);
//1.
//union :返回这个RDD和另一个RDD的并集。任何相同的元素将出现多次(可以使用' .distinct() '消除重复)。
//union结果 1 2 3 4 1 1 3 5
//var rdd = res1.union(res2).collect();
//2.
//subtract:返回一个RDD,其中包含来自“this(res1)”而不在“other(res2)”中的元素
//使用' this(res1) ' partitioner/分区大小,即使' other(res2) '很大,得到的RDD将是<= us(res1)。
//subtract:结果 2 4
//var rdd = res1.subtract(res2).collect();
//3.
//intersection:返回这个RDD和另一个RDD的交集。即使输入RDDs包含重复元素,输出也不会包含重复元素。
//intersection:结果 1 3
//var rdd = res1.intersection(res2).collect();
//4.
//cartesian:返回这个RDD和另一个RDD的笛卡尔积,也就是所有对的RDD元素(a, b),其中a在this(res1)中,b在other(res2)中。
//cartesian结果:(1,1)(1,1)(2,1)(2,1)(1,3)(1,5)(2,3)(2,5)(3,1)(3,1)(4,1)(4,1)(3,3)(3,5)(4,3)(4,5)
//var rdd = res1.cartesian(res2).collect();
//5.
//zip:将这个RDD与另一个RDD压缩,返回每个RDD中的第一个元素、每个RDD中的第二个元素的键值对,以此类推。
//要求这两个RDDs有*相同数量的分区,每个分区中相同数量的元素。类似还有zipWithIndex, zipPartitions
//zip结果:(1,1)(2,1)(3,3)(4,5)
var rdd = res1.zip(res2).collect();
//4.循环打印
rdd.foreach(println);
//5.停止
sc.stop();
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。