转换算子
对结果集{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