Spark RDD的一些常用行动算子及键值对RDD

314 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

什么是键值对类型的RDD?

虽然大部分Spark的RDD操作都支持所有种类的单值RDD,但是有少部分特殊的操作只能作用于键值对类型的RDD。 顾名思义,键值对RDD由一组组的键值对组成,这些RDD被称为PairRDD。PairRDD提供了并行操作各个键或跨节点重新进行数据分组的操作接口。例如,PairRDD提供了reduceByKey()方法,可以分别规约每个键对应的数据,还有join()方法,可以把两个RDD中键相同的元素组合在一起,合并为一个RDD。

该怎样创建一个键值对类型的RDD?

将一个普通的RDD转化为一个PairRDD时可以使用map函数来进行操作,传递的匿名函数需要返回键值对。

例如:

image.png

如何获取键值对RDD的键跟值?

Spark提供了两个方法分别获取键值对RDD的键跟值。keys返回一个仅包含键的RDD,values返回一个仅包含值的RDD。

image.png

一些常用的RDD的行动算子:

行动算子主要是将在数据集上运行计算后的数值返回到驱动程序,从而触发真正的计算。

image.png

count( )

Action类型算子 计算RDD的所有元素个数。 样例:

image.png

collect( )

Action类型算子 返回RDD中所有的元素。 collectAsMap(): Map[K, V] 作用于PairRDD上。

image.png

image.png

take(n)

Action类型算子 返回RDD前面n条记录。

image.png

lookup(key: K)

Action类型算子 作用于(K,V)类型的RDD上,返回指定K的所有V值。 就是将两个集合的元素两两组合成一组。

image.png

first()

返回RDD第一个元素

reduce()

通过func函数聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据。

foreach(func)

在数据集的每一个元素上,运行函数func进行更新。