当前位置: 首页 > news >正文

做展示型网站新闻头条今日要闻最新

做展示型网站,新闻头条今日要闻最新,wordpress直接上传视频,手机web网站开发大纲 sourceMapSplittingMapping ReduceKeyingReducing 完整代码结构参考资料 在《0基础学习PyFlink——模拟Hadoop流程》一文中,我们看到Hadoop在处理大数据时的MapReduce过程。 本节介绍的DataStream API,则使用了类似的结构。 source 为了方便&…

大纲

  • source
  • Map
    • Splitting
    • Mapping
  • Reduce
    • Keying
    • Reducing
  • 完整代码
  • 结构
  • 参考资料

在《0基础学习PyFlink——模拟Hadoop流程》一文中,我们看到Hadoop在处理大数据时的MapReduce过程。
在这里插入图片描述
本节介绍的DataStream API,则使用了类似的结构。

source

为了方便,我们依然使用from_collection从内存中读取数据。
和使用Table API类似,我们给from_collection传递的第二参数是每行数据类型。本例中是String,即“A C B”的类型。

from pyflink.common import Types
from pyflink.datastream import StreamExecutionEnvironment, RuntimeExecutionModeword_count_data = ["A C B","A E B","E C D"]def word_count():env = StreamExecutionEnvironment.get_execution_environment()env.set_runtime_mode(RuntimeExecutionMode.BATCH)# write all the data to one fileenv.set_parallelism(1)source_type_info = Types.STRING()# define the sourcesource = env.from_collection(word_count_data, source_type_info)

可以使用下面指令输出source内容

    source.print()
A C B
A E B
E C D

Map

和上图一样,Map由Splitting和Mapping组成。它们分别将数据切割成做小运算单元,和生成map结构。

Splitting

    def split(line):for s in line.split():yield ssplitted = source.flat_map(split) 

上述splitted的结构输出是

A
C
B
A
E
B
E
C
D

Mapping

Mapping的操作就是将之前的数组结构转换成map结构

mapped=splitted.map(lambda i: (i, 1), Types.TUPLE([Types.STRING(), Types.INT()]))

mapped的输出值如下,可以看到它还是按我们输入数据的顺序排列的。

(A,1)
(C,1)
(B,1)
(A,1)
(E,1)
(B,1)
(E,1)
(C,1)
(D,1)

Reduce

Keying

这一步对应于上图中的Shuffling&Sorting,它会将相同key的数据进行分区,以供后面reducing操作使用。

    keyed=mapped.key_by(lambda i: i[0]) 

可以看到keyed数据已经经过排序和聚合了。

(A,1)
(A,1)
(B,1)
(B,1)
(C,1)
(C,1)
(D,1)

Reducing

 reduced=keyed.reduce(lambda i, j: (i[0], i[1] + j[1]))

reduce的方法有如下注释

Applies a reduce transformation on the grouped data stream grouped on by the given
key position. The ReduceFunction will receive input values based on the key value.
Only input values with the same key will go to the same reducer.

特别是最后一句非常有用“Only input values with the same key will go to the same reducer”(只有相同Key的输入数据才会进入相同的Reducer中)。这句话意味着上述Keyed的数据会被分组执行,于是就不会出现计算错乱。

(A,2)
(B,2)
(C,2)
(D,1)
(E,2)

完整代码

from pyflink.common import Types
from pyflink.datastream import StreamExecutionEnvironment, RuntimeExecutionModeword_count_data = ["A C B","A E B","E C D"]def word_count():env = StreamExecutionEnvironment.get_execution_environment()env.set_runtime_mode(RuntimeExecutionMode.BATCH)# write all the data to one fileenv.set_parallelism(1)source_type_info = Types.STRING()# define the sourcesource = env.from_collection(word_count_data, source_type_info)# source.print()def split(line):for s in line.split():yield ssplitted = source.flat_map(split) # splitted.print()mapped=splitted.map(lambda i: (i, 1), Types.TUPLE([Types.STRING(), Types.INT()]))# mapped.print()keyed=mapped.key_by(lambda i: i[0]) # keyed.print()reduced=keyed.reduce(lambda i, j: (i[0], i[1] + j[1]))# define the sinkreduced.print()# submit for executionenv.execute()if __name__ == '__main__':word_count()

结构

在这里插入图片描述

参考资料

  • https://nightlies.apache.org/flink/flink-docs-master/zh/docs/dev/python/datastream_tutorial/
http://www.ds6.com.cn/news/111341.html

相关文章:

  • cba目前排名seowhy教研室
  • 诸城市做网站网站seo推广多少钱
  • 网站开发论文简要黑帽seo优化推广
  • 郑州哪里做网站汉狮外链网盘下载
  • 做seo网站空间如何在网上做销售推广
  • 做外贸没有网站需要注意什么条件关键词排名推广方法
  • 网站建设 腾cilimao磁力猫
  • ftp怎么做网站企业营销策略有哪些
  • 新塘做网站公司企业品牌类网站有哪些
  • 怎么免费注册自己的网站制作网站的软件有哪些
  • wordpress插件根目录东莞seo优化案例
  • 江苏中南建设集团网站是多少网店推广运营策略
  • 自己做的网站怎么绑定域名怎么在网上销售
  • 建设局与住建局的区别seo排名点击器
  • 北京朝阳区公司seo牛人
  • 教育类网站怎么做优化电商关键词工具
  • 威海哪里可以建设企业网站淄博信息港聊天室网址
  • 做商城网站哪里好四川省人民政府
  • 计算机培训班哪些好站长工具seo综合查询广告
  • 易动力建设网站怎么样最佳磁力引擎吧
  • 网站建设添加音乐的代码南京seo顾问
  • 二手房网站建设方案营销管理系统
  • 软件开发网站开发学习网络营销与直播电商好就业吗
  • 株洲做网站哪家好中国十大门户网站排行
  • 泉州科技云网站建设百度竞价排名多少钱
  • 淘宝现在网站建设不能发布要发布上面类目营销方案ppt
  • 潍坊网站建设服务网站检测工具
  • 网站界面模板下载浏览器下载安装2022最新版
  • 用asp做网站怎么美观佛山网络推广培训
  • 眉县网站开发推广营销软件app