spark RDDS的scala接口总结

一 总览

        根据spark的论文,可以对spark提供的接口进行总览:

        主题分为Transformations(产生RDD的操作)操作和Action(对RDD进行的计算)操作。

二 Trasformations总结

         会有论文中的部分算子,和论文中没有的算子。

         rdd.map()  : 接受一个函数,把函数应用到RDD的每一个元素,返回新的RDD.

         rdd.fileter() :  接受一个函数,把函数应用到RDD的每一个元素,如果元素符合函数,即函数返回的是true,则将该元素加入

新的RDD中。

         rdd.flatMap() : flat(压扁),接受一个函数,将RDD的每个元素按照函数进行分割,返回的数组,将数组中的每个元素作为

新的RDD的元素。

        集合运算:

        distinct() : 去重,将RDD中相同的元素删除.

        rdd1.union(rdd2) : 将两个RDD合并,RDD中元素的类型必须相同。

        rdd1.intersection(rdd2) : 得出两个RDD的交集,形成一个新的RDD。

        rdd1.subtract(rdd2) : 得到RDD1中,RDD2没有的元素,形成新的RDD。   

 

KeyValue的RDD操作    

    平均分数计算:  

val initialScores = Array(("Fred", 88.0), ("Fred", 95.0), ("Fred", 91.0), ("Wilma", 93.0), ("Wilma", 95.0), ("Wilma", 98.0))
val d1 = sc.parallelize(initialScores)
type MVType = (Int, Double) //定义一个元组类型(科目计数器,分数)
d1.combineByKey(
  score => (1, score),
  (c1: MVType, newScore) => (c1._1 + 1, c1._2 + newScore),
  (c1: MVType, c2: MVType) => (c1._1 + c2._1, c1._2 + c2._2)
).map { case (name, (num, socre)) => (name, socre / num) }.collect

 

三 Action操作

                


    

散记:          

        rdd.foreach(println) :测试用的时候打印。

        rdd.persist() : 如果后面还想重用这个rdd,则将这个rdd进行缓存,之后就不必为了得到这个rdd从头开始进行计算,有几个缓存级别。

 

        val 声明变量:不可更改指向的对象

        var 声明变量:可重新指向相同类型的变量

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值