foreachRDD,foreach,foreachPartition区别联系
foreachRDD(SparkStreaming):
SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是"批处理").每一个时间段内处理到的都是一个RDD.而SparkStreaming中的foreachRDD方法就是在处理每一个时间段内的RDD数据.
DStream中即使有foreachRDD算子也不会立即进行处理,只有foreach(func)函数func中存在action算子才会执行foreachRDD算子运算,所有foreachRDD的函数中可以使用foreach和foreachPartition算子来触发action操作.
foreachRDD算子源码中的注释是:Apply a function to each RDD in this DStream. This is an output operator,so 'this' DStream will be registered as an output stream and therefore materialized.
(将函数应用于此DStream中的每个RDD.这是一个输出操作符,所以'this'' DStream将被注册为输出流,因此具体化)
foreachPartition(Spark-Core):
foreachPartition是action算子,该算子源码中的注释是:Applies a function func to each parition of this RDD.(将函数func应用于此RDD的每个分区)
foreachPartition是对每个partition中的iterator实行迭代的处理,通过用户传入的function(即函数func)iterator进行内容的处理,源码中函数func传入的参数是一个迭代器,也就是说在functionPartition中函数处理的是分区迭代器,而非具体的数据.
foreach(Spark-Core):
与foreachPartition类似的是,foreach也是对每个partition中的iterator实行迭代处理,通过用户传入的function(即函数func)对iterator进行内容的处理,而不同的是,函数func中的参数传入的不再是一个迭代器,而是每次foreach得到的一个rdd的kv实例,也就是具体的数据.
foreach也是action算子,源码中的注释是:Applies a function fun to all elements of this RDD.(将函数func用于此RDD的所有元素)
最新文章
- 期权定价公式:BS公式推导——从高数和概率论角度
- MySQL 专用备份软件参考
- js/jquery的应用
- ECMAScript数组常用
- 【巩固】Bootstrap笔记三
- mybatis, spring, springmvc
- iOS 用webView加载后台返回的HTML数据
- WEB 文件上传
- LaTeX 算法代码排版 --latex2e范例总结
- 《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案
- apache-ab并发负载压力测试(转)
- ubuntu安装到选择位置时闪退
- Redis 键(key)
- ios后台程序持续运行方法
- java学习——网络编程UDP
- 如何把Python2的代码转换为Python3的代码
- SGU 319 Kalevich Strikes Back(线段树扫描线)
- Linux下查看使用频率最高的十个命令
- openwrt 中make的使用
- Maven-08: 插件的配置