1.行动算子

collectAsMap:相当于map操作,去掉键相同的键值对

  //如果RDD中同一个Key中存在多个Value,那么后面的Value将会把前面的Value覆盖,
  //最终得到的结果就是Key唯一,而且对应一个Value。

count:计数,返回rdd中的元素数量

countByKey:用来统计RDD[k,v]中每个k的数量

countByValue:统计出集合中每个元素的个数

first:返回RDD中的第一个元素,不排序。

reduce:对集合中的数依次进行相关计算。比如说连加,阶乘

saveAsTextFile

  val list = List(1,3,5,2,4)
​
  val rdd = sc.parallelize(list,3)
​
  //将数据集的元素,以textfile的形式保存到本地文件系统hdfs或者任何其他hadoop支持的文件系统,
  //spark将会调用每个元素的toString方法,
  //并将它转换为文件中的一行文本
  rdd.saveAsTextFile("D://test2")
​
  //使用java的序列化方法保存到本地文件,可以被sparkContext.objectFile()加载
  rdd.saveAsObjectFile("D://test1")

take:用于获取RDD中从0到num-1下标的元素,不排序。

takeSample:有无放回抽样,可控制返回元素个数

详细见:RDD算子之sample、takeSample源码详解_木凡空的博客-CSDN博客_rdd sample

top:用于从RDD中,按照默认(降序)或者指定的排序规则,返回前num个元素。

takeOrdeed:和top类似,只不过和top相反的顺序返回元素

2.转换算子

cartesian:两个RDD进行笛卡尔积合并

coalesce:用于将RDD进行重分区,使用HashPartitioner

​ 且该RDD的分区个数等于numPartitions个数

​ 如果shuffle设置为true,则会进行shuffle

cogroup:对多个RDD中的KV元素,每个RDD中相同key中的元素分别聚合成一个集合。

​ 与reduceByKey不同的是针对两个RDD中相同的key的元素进行合并。

distinct:将原始RDD中重复出现的元素进行过滤,返回一个新生成的RDD

filter:对元素进行过滤,对每个元素应用f函数,返回值为true的元素在RDD中保留,返回为false的将过滤掉

flatMap: map的变换操作是对原RDD中的每个元素进行一对一的操作,生成的RDD中元素的数量与原RDD

​ 中元素数量相同,但flatMap可以将每个元素进行一对多的变换操作

groupByKey:将Key/Value型的RDD中的元素按照Key值进行汇聚,Key值相同的Value值会合并为一个序列。

intersection:返回两个RDD的交集

map:将原来RDD的每个数据项通过map中的用户自定义函数f映射转变为一个新的元素

mapValues:同基本转换操作中的map,针对[K,V]中的V值进行map操作。

reduceByKey:针对RDD中相同的key的元素进行合并

sample

  val list = List(1,2,3,4,5,6,7,8,9,10)
  val rdd = sc.parallelize(list)
  rdd.sample(true,0.5,System.currentTimeMillis).foreach(println)
​
  val rdd1 = sc.parallelize(Range(1,101).toList)
​
  //对RDD进行抽样,其中参数withReplacement为true时表示抽样之后还放回,可以被多次抽样,
  //false表示不放回;fraction表示抽样比例;seed为随机数种子,比如当前时间戳
  rdd1.sample(true, 0.1,System.currentTimeMillis()).foreach(println)

sortByKey:通过key进行排序,false为降序,ture为升序

subtract:返回RDD中出现,并且不在otherRDD中出现的元素,不去重。

subtractByKey:返回key在RDD中出现,并且不在otherRDD中出现的元素,不去重。

union:合并两个RDD,不去重

value:获取所有的value

zip:用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,

​ 否则会抛出异常。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐