Spark RDD常见转换和动作

Spark在提交后通过数据输入形成RDD,然后就可以通过转换算子(如filter,map)对数据进行操作并将RDD转换为新的RDD,然后通过action算子,出发Spark提交作业

转换操作:
  • 转换操作有值类型的和键值(key/value)类型的转换,两者都不会触发提交作业
  • map:最常见的操作即将rdd中每个数据想通过用户自定函数映射成新的元素,如rdd1:RDD[Int],rdd1.map(f=>(f,f*f))
  • flatMap(func):类似于map,但每一个输入元素可以被映射成为一个或多个输出元素
  • filter(func):返回一个经过过滤后的新数据集,过滤方式为func自定义的任意类型,对于每个项进行操作,返回true的数据项进行保留,新的数据集为上一个的子集
  • mapPartitions:获取每个分区的迭代器,在函数中通过这个分区的整体迭代器对整个分区的元素进行操作
  • union:合并两个相同类型的rdd,并且不进行去重操作,类似于sql的中union,由于没有union all操作,如果要去重的话可以使用rdd.distinct,rdd1++rdd2相当于union操作
  • subtract:相当于两个rdd进行差集的操作,如rdd1.subtract(rdd2),相当于去除rdd1中所有不存在rdd2中的元素,有点类似not in操作
  • filter(f):过滤用的,过滤符合f函数或表达式为true的数据出来
  • distinct();返回一个去重后的新的Rdd
  • groupByKey():返回聚合之后Key-Value集合Dataset,例如{[1,2],[1,3],[2,4],[2,4]},groupByKey之后{[1,[2,3]],[2,[4,4]]}
Action操作
  • reduce(f):将Rdd聚集,使用指定的可交换和关联的二进制运算符减少此RDD的元素。
  • collect():返回Rdd中所有的集合,量大的谨慎使用
  • count() :获取RDD集合中元素个数
  • first():返回第一个元素
  • take(n):获取rdd中前N个元素
  • foreach(f):将函数f应用于此RDD的所有元素
  • saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]):将Rdd存储为text 文件,一般在hdfs中,rdd中每个元素为一行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值