spark core开发2

spark中常用的算子:
map算子:
将原来RDD的每个数据项通过map中的用户自定义函数f映射转变为一个新的元素,途中每个方框表示一个RDD分区,左侧的分区经过用户自定义函数f 映射为右侧的新RDD分区,但是,实际只有等到action算子触发后,这个f函数才会和其他函数在一个stage中的数据进行运算
mapValues算子:
针对(key,value)型数据中的value进行map操作 而不对key进行处理 图中的方框代表RDD分区 a=>a+2 代表针对(V1,1)这样的Key value数据对,数据支队value中的1进行加2的操作
flatmap 算子
将原来R得到中的每个元素通过函数f转换为新的元素,并将生成的RDD的每个分区中多个集合中的元素合并为一个集合
mapPartition算子:
针对每一个分区 ,在函数中通过这个分区整体的迭代器对整个分区的元素进行操作
union算子: 取并集
需要保证两个RDD元素的数据类型相同,返回的RDD数据类型和被合并的RDD元素数据类型相同,并不进行去重操作,保存所有元素
**intersection算子:**取交集
该函数返回两个RDD的交集,并且去重
groupbykey算子:
在执行该算子之前,需要将元素通过函数生成相应的Key,数据就转化为key-value格式,之后利用该算子将Key相同的元素分为一组 可以指定最后生成多少个分区 groupbykey(x),x确定了分区个数和分区函数,决定了并行化的程度
spark core开发2
Combinebykey : aggregateByKey foldByKey reduceByKey 等函数都是基于该函数实现的 相当于将元素为(int,int的rdd转变为了(int seq[int])类型元素的RDD)
(V1,2)
(V1,1)------>(V1,seq(2,1))
Reducebykey:
两个值合并成一个值,(int,int v)====>(int,intC)
通过用户自定义函数(A,B):(A+B)函数,将相同key的数据(v1,1),(v1,2)---->(v1,3)
aggregatebykey :
以分区为单位进行操作,aggregatebykey(初始值,函数1,函数2)
例:函数1定义的逻辑是求每个key的多个value的最大值,
函数2定义的逻辑是求和,
底层实现:
1.针对每一个分区内相同的key,一次比较初始值和v1,返回值和v2,返回值….直到获取到最大值
2.将不同分区得到的统计结果进行汇总,汇总的方式是将相同key的统计结果相加
Sortbykey:
按照key值排序
join算子:
对两个需要连接的RDD进行cogroup函数操作,将先相同key的数据能够放到同一个分区,在cogroup操作之后形成的新RDD对每个key下的元素进行笛卡尔积的操作,返回的结果再展平,对应key下的所有元祖形成一个集合,返回RDD[(K,(V,W))]
spark core开发2
cogroup算子:
cogroup函数将两个RDD进行协同划分,对在两个RDD中的key-value类型的元素,每个RDD相同key的元素分别聚合为一个集合,并且返回两个RDD中对应key的元素集合的迭代器:(K,(Iterable[V],Iterable[W]))其中,value是两个RDD下相同key的两个数据集合的迭代器所构成的元祖
spark core开发2
cartesian算子:
对两个RDD内的所有元素进行笛卡尔积操作
spark core开发2
repartition算子:
对输入RDD重新分区
输出分区为输入分区子集
filter算子:
对元素进行过滤,返回值为boolen类型,true在RDD中保留,false将被过滤
Sample(false,0.001,20):
False:是否放回
0.001:概率
20:随机数种子
对于RDD中每个partition的数据按照抽样率进行抽样,并返回一个新的RDD
Takesample(action算子):
直接可以打印数据集

java开发:
spark core开发2
spark core开发2
spark core开发2
spark core开发2
spark core开发2
spark core开发2
spark core开发2
spark core开发2