Spark实例:map、union、combineByKey用法结合,输出每个学号和平均成绩程序

这是用到的两个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)}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值