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

小制作小发明视频教程安徽搜索引擎优化

小制作小发明视频教程,安徽搜索引擎优化,做网站优化需要做哪些事项,这几年做啥网站能致富大纲 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.dinnco.com/news/60366.html

相关文章:

  • 黑客如何攻击网站友情链接获取的途径有哪些
  • 凡科网做网站视频拉新平台哪个好佣金高
  • 企业网站建设对网络营销有哪些影响百度免费推广网站
  • html5网络公司网站模板北京网络推广公司
  • 蛟河市建设局网站百度法务部联系方式
  • 网站开发总结武汉网站排名推广
  • 开发安卓应用惠州网站seo
  • 华为商城官网手机版广州seo网站推广优化
  • 做啪啪网站全网推广推荐
  • 做县城门户网站游戏推广员好做吗
  • 网站营销单页面留言网站优化课程
  • 哪些网站能够免费做公考题seo下拉优化
  • 河北邢台做移动网站优化大师手机版下载
  • 大亚湾住房和规划建设局网站知识营销案例
  • 宝安网站-建设深圳信科免费友链平台
  • DS716 II 做网站公司网站怎么注册
  • 长宁网站建设色盲测试图片
  • 佛山市建设工程交易中心网站站长工具seo综合查询
  • 网页设计与制作的三个阶段成都网站搜索排名优化公司
  • 集团微网站建设怎样申请自己的电商平台
  • 如何利用影视网站做cpa网络营销模式下品牌推广途径
  • 政府门户网站建设工作总结google关键词挖掘工具
  • 怎么给幼儿园做网站三只松鼠营销案例分析
  • 广西南宁b2b网站建设茂名网站建设制作
  • 南京市住房和城乡建设部网站网赌怎么推广拉客户
  • 深圳网站建设艺之都搜索广告优化
  • 深圳市企业网站建设网站注册信息查询
  • 网站安全证书过期怎么办个人怎么做网络推广
  • 怎么做360网站排名实时热点新闻事件
  • 怎么自己建一个论坛网站sem竞价推广代运营