当前位置:   article > 正文

RDD的创建-Scala_rdd的创建sanla

rdd的创建sanla

第1关:集合并行化创建RDD

知识点

1.reduceByKey():对元素为RDD[K,V]对的RDDKey相同的元素的Value进行聚合。

2.foreach():对数据集中每一个元素运行函数。

编程要求

计算并输出各个学生的总成绩。

  • ("bj",88): bj指学生姓名,88指学生成绩
  1. import org.apache.spark.SparkContext
  2. import org.apache.spark.SparkConf
  3. object Student {
  4. def main(args: Array[String]): Unit = {
  5. val conf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster("local")
  6. val sc = new SparkContext(conf)
  7. val arr1=Array(("bj",88),("sh",67),("gz",92))
  8. val arr2=Array(("bj",94),("sh",85),("gz",95))
  9. val arr3=Array(("bj",72),("sh",69),("gz",98))
  10. /********** begin **********/
  11. //第一步:先将数组进行合并
  12. val arr=arr1++arr2++arr3
  13. //第二步:创建RDD
  14. val arrRDD=sc.makeRDD(arr)
  15. //第三步:把相同key的进行聚合
  16. val result=arrRDD.reduceByKey(_+_)
  17. //第四步:输出
  18. result.foreach(println)
  19. /********** end **********/
  20. sc.stop()
  21. }
  22. }

第2关:读取外部数据集创建RDD

知识点

1.textFile():读取文件

2.map算子:对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。

  1. scala> val numbers=sc.makeRDD(List(1,2,3,4))
  2. scala> numbers.map((i: Int) => i * 2)
  3. res0: List[Int] = List(2, 4, 6, 8)

3.sortBy():对RDD中的元素进行排序

  1. val list = List(("spark",2),("hive",1),("hadoop",4))
  2. val stuRDD = sc.makeRDD(list)
  3. stuRDD.sortBy(_._2,false,3)//参数1:函数,排序规则有这个函数决定(必填) 参数2:升降序(true为升序,false为降序) 参数3:分区数量

编程要求

按每位老师出现的次数降序,输出老师姓名和出现次数。

  • 输入文件样例:

bigdata,laozhang

bigdata,laoduan

javaee,xiaoxu

bigdata指科目,laozhang指老师名称

  1. import org.apache.spark.SparkContext
  2. import org.apache.spark.SparkConf
  3. object Teachers {
  4. def main(args: Array[String]): Unit = {
  5. val conf = new SparkConf().setAppName("Teachers").setMaster("local")
  6. val sc = new SparkContext(conf)
  7. val dataFile = "file:///root/step2_files"
  8. /********** begin **********/
  9. //第一步:以外部文件方式创建RDD
  10. val teaRDD=sc.textFile(dataFile)
  11. //第二步:将文件中每行的数据切分,得到自己想要的返回值
  12. val teacher=teaRDD.map(line => {
  13. val course=line.split(",")(0)
  14. val name=line.split(",")(1)
  15. (name,1)
  16. })
  17. //第三步:将相同的key进行聚合
  18. val tea=teacher.reduceByKey(_+_)
  19. //第四步:按出现次数进行降序
  20. val result=tea.sortBy(_._2,false,3)
  21. //第五步:输出
  22. result.foreach(println)
  23. /********** end **********/
  24. sc.stop()
  25. }
  26. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/533149
推荐阅读
相关标签
  

闽ICP备14008679号