Spark学习笔记:(3、键值对操作 )

Spark学习笔记3:键值对操作

键值对RDD通常用来进行聚合计算,Spark为包含键值对类型的RDD提供了一些专有的操作

 Spark中创建pair RDD的方法:

1、存储键值对的数据格式会在读取时直接返回由其键值对数据组成的pair RDD
2、还可以使用map()函数将一个普通的RDD转为pair RDD。

Pair RDD的转化操作

  1. reduceByKey()  与reduce类似 ,接收一个函数,并使用该函数对值进行合并,为每个数据集中的每个键进行并行的归约操作。返回一个由各键和对应键归约出来的结果值组成的新的RDD。例如 :上一章中单词计数的例子:val counts  =  words.map(word => (word,1)).reduceByKey{ case (x,y) => x + y}
  2. foldByKey()与fold()类似,都使用一个与RDD和合并函数中的数据类型相同的零值最为初始值。val counts  =  words.map(word => (word,1)).foldByKey{ case (x,y) => x + y}
  3. combineByKey()是最为常用的基于键进行聚合的函数,可以返回与输入类型不同的返回值。
  4. groupByKey()使用RDD中的键来对数据进行分组,对于一个由类型K的键和类型V的值组成的RDD,所得到的结果RDD类型会是[K, Iterable[V] ]。
  5. cogroup函数对多个共享同一个键的RDD进行分组,对两个键类型均为K而值类型分别为V和W的RDD进行cogroup时,得到的结果RDD类型为[(K,(Iterable[V],Iterable[W]))] 。
  6. join(other)这样的连接是内连接,只有在两个pair RDD中都存在的键才输出。若一个输入对应的键有多个值时,生成的pair RDD会包括来自两个输入RDD的每一组相对应的记录。
  7. leftOuterJoin(other)左外连接和rightOuterJoin(other)右外连接都会根据键连接两个RDD,但是允许结果中存在其中的一个pair RDD所缺失的键。
  8. sortByKey()函数接收一个叫做ascending的参数,表示想要让结果升序排序还是降序排序。

Pair RDD的行动操作

1、countByKey() 对每个键对应的元素分别计数。

2、collectAsMap()将结果以映射表的形式返回,注意后面的value会覆盖前面的。

3、lookup(key)返回给定键对应的所有值。 

猜你喜欢

转载自blog.csdn.net/qq_38262266/article/details/90229200
今日推荐