RDD入门及三种算子
//Map算子
@TestdefmapTest():Unit={//1.创建RDD
val rdd1:RDD[Int]= sc.parallelize(Seq(1,2,3))//2.执行Map操作
val rdd2:RDD[Int]= rdd1.map(item => item *10)//3.得到结果
val result:Array[Int]= rdd2.collect()
result.foreach(goods => println(goods))}
@Test//flatMap:1.把RDD中的数据转换为数据或者集合形式 2.把集合或者数组展开 3. 生成了多条数据 flatMap是一对多
defflatMapTest():Unit={//1.创建RDD
val rdd1:RDD[String]= sc.parallelize(Seq("hello lily","hello lucy","hello tim"))//2.处理数据
val rdd2:RDD[String]= rdd1.flatMap(item => item.split(" "))//拆分数组为一个个单词
//3.得到结果
val result:Array[String]= rdd2.collect()
result.foreach(item => println(item))//4.关闭sc
sc.stop()}
@TestdefreduceByKeyTest():Unit={//1.创建RDD
val rdd1:RDD[String]= sc.parallelize(Seq("hello lily","hello lucy","hello tim"))//2.处理数据
val rdd2:RDD[(String,Int)]= rdd1.flatMap(item => item.split(" ")).map(item =>(item,1))//元组的形式
.reduceByKey((curr, agg)=> curr + agg)//curr代表第一次执行的value值,agg是局部结果 ,局部结果变成整体结果
//reduceByKey第一步先按照key分组,然后对每一组进行聚合,得到结果
//3.得到结果
val result:Array[(String,Int)]= rdd2.collect()
result.foreach(item => println(item))//4.关闭sc
sc.stop()}
本文转载自: https://blog.csdn.net/m0_62491934/article/details/123739126
版权归原作者 那人独钓寒江雪. 所有, 如有侵权,请联系我们删除。
版权归原作者 那人独钓寒江雪. 所有, 如有侵权,请联系我们删除。