转换算子
对结果集{1,2,3,3}进行基本RDD转换操作
函数名 | 目的 | 实例 | 结果 |
---|---|---|---|
map | 函数应用每个元素并返回新的RDD | rdd.map(lambda x:x+1) | {2,3,4,4} |
flatMap | 函数应用每个元素,将返回迭代器里所有元素构成新的RDD | rdd.flatMap(lambda x:[i for i in range(x)]) | {0, 0, 1, 0, 1, 2, 0, 1, 2} |
filter | 过滤 | rdd.filter(lambda x : x != 1) | {2,3,3} |
distinct | 去重 | rdd.distinct | {1,2,3} |
sample(withReplacement, fraction,[seed]) | 取样 | rdd.sample(False,0.5) | 不确定 |
glom | 按分区进行分组 | rdd.glom() | 不确定 |
repartition(num) | rdd数据进行重新分为num个分区 |
两个 RDD 的转换操作
对数据{1,2,3}和数据{3,4,5} 进行操作
函数名 | 目的 | 实例 | 结果 |
---|---|---|---|
union | 合并两个RDD | rdd.union(other) | {1,2,3,3,4,5} |
intersection | 求两个rdd的共同元素 | rdd.intersection(other) | {3} |
subtract | 移除一个 RDD中的内容 | rdd.subtract(other) | {1,2} |
cartesian | 计算两个算子的笛卡尔积 | rdd.cartesian(other) | {(1,3),{1,4},(1,5),(2,3),(2,4),(2,5),(3,3),(3,4),(3,5)} |
注: 转换算子详细介绍 https://www.jianshu.com/p/340c848e9149
行动算子
对数据集{1,2,3,3} 进行基本的RDD行动算子操作
函数名 | 目的 | 实例 | 结果 |
---|---|---|---|
collect | 返回 RDD 所有元素 | rdd.collect() | {1,2,3,3} |
count | 返回 RDD 所有元素个数 | rdd.count() | 4 |
countByValue | 统计每个元素次数 | rdd.countByValue | {(1,1),(2,1),(3,2)} |
take(num) | 从 RDD 中返回 num 个元素 | rdd.take(2) | {1,2} |
top(num) | 从 RDD 中返回最前面 num 个元素 | rdd.top(2) | {3,3} |
takeOrdered | 从 RDD 中按照顺序返回前num个元素 | rdd.takeOrdered(2) | {3,3} |
takeSample | 取样 | 略 | 不确定 |
reduce(func) | 并行整合 RDD 中所有数据 | rdd.reduce(x,y=>x+y) | 9 |
fold(zerod,func) | 与reduce类似需要提供初始值 | 略 | 略 |
aggregate | 与reduce类似需要通常返回不同的数据类型 | 略 | 略 |
foreach(func) | 对每个rdd中的元素作用func函数 | 无 | |
foreachPartition(func) | 每个分区元素列表作用于func函数 |
注:行动算子 详细介绍: https://www.jianshu.com/p/c2186c5595da