这是用到的两个txt文件各12行数据,相间以制表符\t作分隔。
创建RDD
val bigdata=sc.textFile("D:\\data\\result_bigdata.txt").map{x=>val line=x.split("\t");(line(0),line(2).toInt)}
val math=sc.textFile("D:\\data\\result_math.txt").map{x=>val line=x.split("\t");(line(0),line(2).toInt)}
合并数据:
val scores=bigdata.union(math).map{x=>(x._1,x._2)}
scores.collect
利用combineByKey将相同的键的键值对的值相加
val sum_s=scores.combineByKey(
| count=>(count,1),
| (acc:(Int,Int),count)=>(acc._1+count,acc._2+1),
| (acc1:(Int,Int),acc2:(Int,Int))=>(acc1._1+acc2._1,acc1._2+acc2._2))
sum_s.collect
对两科成绩求平均值
val avg_sum=sum_s.map{x=>(x._1,x._2._1.toDouble/x._2._2)}