LearningSpark(3):常用RDD操作

键值对RDD上的操作 隐式转换

shuffle操作中常用针对某个key对一组数据进行操作,比如说groupByKey、reduceByKey这类PairRDDFunctions中需要启用Spark的隐式转换,scala就会自动地包装成元组 RDD。导入 org.apache.spark.SparkContext._即可

没啥意思,就是记着导入import org.apache.spark.SparkContext._就有隐式转换即可

常用Transformation算子

  • map:对RDD中的每个数据通过函数映射成一个新的数。输入与输出分区一对一

  • flatMap:同上,不过会把输出分区合并成一个

    • 注意:flatMap会把String扁平化为字符数组,但不会把字符串数组Array[String]扁平化

    map和flatMap还有个区别,如下代码 更多map、flatmap区别见这里

    scala> val list = List(1,2,3,4,5)
    list:List [Int] = List(1,2,3,4,5)
    
    scala> def g(v:Int)= List(v-1,v,v + 1)
    g:(v:Int)List [Int]
    
    scala> list.map(x => g(x))
    res0:List [List [Int]] = List(List(0,1,2),List(1,2,3),List(2,3,4),List(3,4,5),List(List) 4,5,6))
    
    scala> list.flatMap(x => g(x))
    res1:List [Int] = List(0,1,2,1,2,3,2,3,4,3,4,5,4,5,6)
    
  • filter:通过func对RDD中数据进行过滤,func返回true保留,反之滤除

  • distinct:对RDD中数据去重

  • reduceByKey(func):对RDD中的每个Key对应的Value进行reduce聚合操作

  • groupByKey():根据key进行group分组,每个key对应一个Iterable<value>

  • sortByKey([ascending]):对RDD中的每个Key进行排序,ascending布尔值是否升序 【默认升序】

  • join(otherDataset):对两个包含<key,value>对的RDD进行join操作,每个key join上的pair,都会传入自定义函数进行处理

常用Action算子

  • reduce(func):通过函数func聚合数据集,func 输入为两个元素,返回为一个元素。多用来作运算
  • count():统计数据集中元素个数
  • collect():以一个数组的形式返回数据集的所有元素。因为是加载到内存中,要求数据集小,否则会有溢出可能
  • take(n):数据集中的前 n 个元素作为一个数组返回,并非并行执行,而是由驱动程序计算所有的元素
  • foreach(func):调用func来遍历RDD中每个元素
  • saveAsTextFile(path):将数据集中的元素以文本文件(或文本文件集合)的形式写入本地文件系统、HDFS 或其它 Hadoop 支持的文件系统中的给定目录中。Spark 将对每个元素调用 toString 方法,将数据元素转换为文本文件中的一行记录
  • countByKey():仅适用于(K,V)类型的 RDD 。返回具有每个 key 的计数的 (K , Int)对 的 Map
    • sortBy(func, ascending):通过指定排序函数func对RDD中元素排序,ascending 是否升序 【默认true升序,一般func指定按哪个值排序】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值