spark键值对转换操作例子

题目:给定一组键值对(“spark”,2),(“hadoop”,6),(“hadoop”,4),(“spark”,6),键值对的key表示图书名称,value表示某天图书销量,请计算每个键对应的平均值,也就是计算每种图书的每天平均销量。
很显然,对于上面的题目,结果是很显然的,(“spark”,4),(“hadoop”,5)。

package cn.com.day1
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object Test_05 {
  /**
   * 题目:给定一组键值对(“spark”,2),(“hadoop”,6),(“hadoop”,4),(“spark”,6),键值对的key表示图书名称,value表示某天图书销量,请计算每个键对应的平均值,也就是计算每种图书的每天平均销量。
   * 很显然,对于上面的题目,结果是很显然的,(“spark”,4),(“hadoop”,5)。
   *
   */
  def main(args: Array[String]) {
    val conf = new SparkConf(); //创建SparkConf 对象
    conf.setAppName("Wow,my  first spark app"); // 设置应用程序的名称,在程序运行的监控面可以看到名称
    conf.setMaster("local"); //此时,程序在本地运行,不需要安装Spark集群
    val sc = new SparkContext(conf); //创建sparkContext对象,通过sparkConf实例来定制spark运行

    val list = Array(("spark", 1), ("spark", 2), ("hadoop", 3), ("hadoop", 5))
    var rdd = sc.parallelize(Array(("spark", 2), ("hadoop", 6), ("hadoop", 4), ("spark", 6)))
    rdd.mapValues(x => (x, 1)).reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))
      .mapValues(x => (x._1 / x._2)).collect().foreach(println)
  }
}

运行结果:

(spark,4)
(hadoop,5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值