四:RDD之--Pair RDD

RDD之--Pair RDD


1. Pair RDD介绍


(1)Pair RDD是以Key-Value形式存在的数据。对于现实生活中的一些数据需要以键值对的形式存在(比如统计每个产品的评论,将数据中键相同的分为一组)。


(2)spark为包含键值对类型的RDD提供了一些专有的操作(这样的RDD称为:Pair RDD)。另外,Pair RDD提供了并行操作对各个键或跨节点重新进行数据分组的操作接口。
例如:reduceByKey()方法是针对Key-Value形式的RDD进行相关的操作,将具有相同Key值的Value进行指定的函数运算,从而构成行的Key-Value对,新的Key-Value对有构成了新的RDD。reduceByKey实例:



(3)该操作首先会将具有相同Key值的分为一组(例如:(“a”,(1,2,3)))。然后在组内将Value值进行相加操作,再将结果与Key值构成新的Key-Value对。


2. 创建Pair RDD


spark中有很多种创建pair RDD的方式,主要是:


(1)很多存储键值对的数据格式会在读取时直接返回由其键值对数据组成的 pair RDD(通过读取文件操作)。例如:




2)一个普通的RDD要转为pair RDD时,可以调用map()函数来实现,传递的函数需要返回键值对(通过从内存里读取操作)。例如:



对于上述实例:首先是以字符串列表作为数据源来创建rdd1,然后利用map()函数将列表中的字符串转换成Key-Value对,其中Key值为字符串的长度,Value值为字符串本身。


3. Pair RDD的转化操作


(1)RDD的操作也是同样适用于Pair RDD的,由于 pair RDD 中包含二元组,所以需要传递的函数应当操作二元组而不是独立的元素。

四:RDD之--Pair RDD_第1张图片四:RDD之--Pair RDD_第2张图片四:RDD之--Pair RDD_第3张图片


(2)filter()函数筛选字符串类型的Value值(Value的长度小于等于4),实例:

四:RDD之--Pair RDD_第4张图片

四:RDD之--Pair RDD_第5张图片


filter针对RDD中的每一个元素进行指定的函数运算,对于返回为true的元素,筛选出来作为新RDD中的元素。


(3)mapValues() 函数:适用于Key-Value形式的RDD,主要就是针对Key-Value对中的每个Value值进行指定的函数运算,从而的到新的Value值。Key值是保持不变的,实例:

四:RDD之--Pair RDD_第6张图片


1)首先是基于集合创建RDD:makeRDD;

2)其次通过map()函数创建键值对RDD;

3)最后mapValue()函数对Value值进行操作。

你可能感兴趣的:(四:RDD之--Pair RDD)