《Storm分布式实时计算模式》——3.5 Trident聚合器

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介:

本节书摘来自华章计算机《Storm分布式实时计算模式》一书中的第3章,第3.5节,作者:(美)P. Taylor Goetz Brian O’Neill 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 Trident聚合器

和function类似,aggregator(聚合器)允许topology组合tuple。不同的是,它会替换tuple的字段和值。有三种聚合器:CombinerAggregator、ReducerAggregator和Aggregator。
3.5.1 CombinerAggregator

CombinerAggregator用来将一个集合的tuple组合到一个单独的字段中,Combiner的签名(Signature)如下所示:


1afecfef595e15e396f886e7067d5c4beb74cf6a

Storm对每个tuple调用init()方法,然后重复调用combine()方法直到一个分片的数据处理完成。传递给combine()方法的两个参数是局部聚合的结果,以及调用了init()返回的值。分片会在后面的部分详细介绍,分片实际上就是tuples组成的数据流在同一个机器上的一个子集。将tuple生成的值进行组合之后,Storm发送组合结果作为一个新的字段。如果分片是空的,Storm会发送zero()方法执行的返回。
3.5.2 ReducerAggregator
ReducerAggregator接口有一点区别,签名如下:

93628b153d2c75462ab17b915ee62ba7b6e5bce6

Storm调用init()方法来获取原始值。然后为分片中的每一个tuple调用reduce()方法,直到分片数据处理完成。第一个参数是局部的聚合结果。这个方法的实现需要将第二个参数tuple合并到局部聚合结果中返回。
3.5.3 Aggregator
最通用的聚合操作是Aggregator。签名如下所示:

2da1b6f432c4af50a8dc7ac7d3db7091db22c566

Aggregator接口的aggregate()方法和function接口的execute()方法类似,但是多了一个value参数。这样Aggregator就可以在处理tuple的时候累积值。注意,在Aggregator接口中,aggregate()和complete()方法都有collector这个参数,通过它可以发射任意个数的tuple。在我们的topology例子中,我们利用了一个内置的Count的Aggregator。Count的实现如下面代码片段所示:

8eecd2bb76cf8372870ee0ce38d611127e7c0a0a

我们在示例topology中使用了分组和计数来统计在一个城市附近一个小时内发生疾病的次数。实现代码如下所示:

f450c66221fa16f59114b7aff11b3a1279ce8cbc

回顾Storm在不同机器上的数据的分片,如图3-2所示。

<a href=https://yqfile.alicdn.com/899f99dbd07c00661c7faf29135d61beb6420e4e.png
" >

groupBy()方法强制数据重新分片,将特定字段值相同的tuple分组到同一个分片中。为了做到这个,Storm必须将相似的tuple发送到相同的主机上。图3-3展示了数据被groupBy()重新分组后的分片情况。


<a href=https://yqfile.alicdn.com/3c5b95458c4e0eda57a90ddd66123171e5f7d382.png" >

分片后,agreagte函数在每个分片数据的每个分组中运行。在我们的例子里,根据城市、小时、疾病代码作为分组的关键词。然后Count aggregator在每个分组上执行,将计数发射给下游的消费者组件。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
6月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
462 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
6月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
208 12
|
6月前
|
SQL 关系型数据库 MySQL
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
Apache Flink CDC 3.4.0 版本正式发布!经过4个月的开发,此版本强化了对高频表结构变更的支持,新增 batch 执行模式和 Apache Iceberg Sink 连接器,可将数据库数据全增量实时写入 Iceberg 数据湖。51位贡献者完成了259次代码提交,优化了 MySQL、MongoDB 等连接器,并修复多个缺陷。未来 3.5 版本将聚焦脏数据处理、数据限流等能力及 AI 生态对接。欢迎下载体验并提出反馈!
1099 1
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
440 3
|
8月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1631 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
9月前
|
SQL 数据建模 BI
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
245 4
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
401 0
|
存储 SQL 数据采集
从 Storm 迁移到 Flink,美团外卖实时数仓建设实践
本文主要介绍一种通用的实时数仓构建的方法与实践。实时数仓以端到端低延迟、SQL 标准化、快速响应变化、数据统一为目标。
从 Storm 迁移到 Flink,美团外卖实时数仓建设实践

热门文章

最新文章