衔接上文:http://t.csdn.cn/Z0Cfj
文章目录
- 三、掌握行动算子
- 3.1 归约算子 - reduce()
- 3.2 采集算子 - collect()
- 3.3 首元素算子 - first()
- 3.4 计数算子 - count()
- 3.5 按键计数算子 - countByKey()
- 3.6 前截取算子 - take(n)
- 3.7 排序前截取算子 - takeOrdered(n)[(ordering)]
- 3.8 遍历算子 - foreach()
- 3.9 存文件算子 - saveAsFile()
三、掌握行动算子
3.1 归约算子 - reduce()
功能:
- reduce()算子按照传入的函数进行归约计算
案例:
- 计算1 + 2 + 3 + …+100的值
- 计算1 × 2 × 3 × 4 × 5 × 6 的值(阶乘 - 累乘)
- 计算12 + 22 + 32 + 42 + 5**2的值(先映射,后归约)
3.2 采集算子 - collect()
功能:
- collect()算子向Driver以数组形式返回数据集的所有元素。通常对于过滤操作或其他返回足够小的数据子集的操作非常有用。
案例:
- 显示RDD的全部元素
3.3 首元素算子 - first()
功能:
- first()算子返回数据集中第一个元素
案例:
- 显示RDD的首元素
3.4 计数算子 - count()
功能:
- count()算子统计RDD的元素个数
案例:
- 统计RDD的元素个数
- 如果要统计单词个数,那就要采用扁平映射算子
3.5 按键计数算子 - countByKey()
功能:
- countByKey()算子按键统计RDD键值出现的次数,返回由键值和次数构成的映射。
案例:
- List集合中存储的是键值对形式的元组,使用该List集合创建一个RDD,然后对其进行countByKey的计算。
- 注意:元素必须是键值对的二元组,不能是三元组
3.6 前截取算子 - take(n)
功能:
- take(n)算子返回RDD的前n个元素(同时尝试访问最少的partitions),返回结果是无序的,测试使用
案例: - 返回集合中前任意多个元素组成的数组
- 三种情况:返回空集、真子集、全集
3.7 排序前截取算子 - takeOrdered(n)[(ordering)]
功能:
- takeOrdered(n, [ordering])算子返回RDD中的前n个元素,并以自然顺序或自定义的比较器顺序进行排序
案例: - 返回RDD前n个元素(升序)
- 返回前n个元素(降序)
- 其实,可以top(n)算子来实现同样的效果,更简单
3.8 遍历算子 - foreach()
功能:
- 计算 RDD中的每一个元素,但不返回本地(只是访问一遍数据),可以配合println友好地打印数据。
案例: - 将RDD里的每个元素平方后输出(一定要采集,才能遍历)
- 将RDD的内容逐行打印输出
3.9 存文件算子 - saveAsFile()
功能:
- 将RDD数据保存到本地文件或HDFS文件
案例: - 将rdd内容保存到HDFS的/park/out目录
- 查看另存的结果文件