一、Transformation算子演示
val conf = new SparkConf().setAppName("Test").setMaster("local") val sc = new SparkContext(conf) //通过并行化生成rdd //map:对rdd里面每一个元乘以2然后排序 //filter:该RDD由经过func函数计算后返回值为true的输入元素组成 val rdd4 = sc.parallelize(Array("a b c","b c d")) //union:求并集 //intersection:求交集 //distinct:去重出重复 //join相同的key会被合并 val rdd11_1 = sc.parallelize(List(("tom",1),("jerry" ,3),("kitty",2))) //按照相同key进行分组,并且可以制定分区 //根据相同key进行分组[分组的话需要二元组] |
二、Action算子演示
val conf = new SparkConf().setAppName("Test").setMaster("local[*]") val sc = new SparkContext(conf) /* Action 算子*/ //集合函数 val rdd1 = sc.parallelize(List(2,1,3,6,5),2) val rdd1_1 = rdd1.reduce(_+_) println(rdd1_1) //以数组的形式返回数据集的所有元素 println(rdd1.collect().toBuffer) //返回RDD的元素个数 println(rdd1.count()) //取出对应数量的值 默认降序, 若输入0 会返回一个空数组 println(rdd1.top(3).toBuffer) //顺序取出对应数量的值 println(rdd1.take(3).toBuffer) //顺序取出对应数量的值 默认生序 println(rdd1.takeOrdered(3).toBuffer) //获取第一个值 等价于 take(1) println(rdd1.first()) //将处理过后的数据写成文件(存储在HDFS或本地文件系统) //rdd1.saveAsTextFile("dir/file1") //统计key的个数并生成map k是key名 v是key的个数 val rdd2 = sc.parallelize(List(("key1",2),("key2",1),("key3",3),("key4",6),("key5",5)),2) val rdd2_1: collection.Map[String, Long] = rdd2.countByKey() println(rdd2_1) //遍历数据 rdd1.foreach(x => println(x)) /*其他算子*/ |
原文地址:https://www.cnblogs.com/gcghcxy/p/11040688.html