您现在的位置是:亿华云 > IT科技类资讯
高级测试:如何使用Flink对Strom任务的逻辑功能进行复现测试?
亿华云2025-10-04 03:53:35【IT科技类资讯】4人已围观
简介Flink和Strom都是时下较为流行的数据流平台,考虑以下一种应用场景:已经使用Strom完成了对于某一逻辑功能的开发,如果现在期望使用Flink实现相同的逻辑,那么就需要考虑如何使用Flink来对
Flink和Strom都是高级时下较为流行的数据流平台,考虑以下一种应用场景:已经使用Strom完成了对于某一逻辑功能的测试开发,如果现在期望使用Flink实现相同的何使逻辑,那么就需要考虑如何使用Flink来对Strom任务的对S的逻逻辑功能进行最简单的复现测试。
使用Flink来测试Strom任务的任务逻辑主要存在两个最基本的问题:第一,Storm通过自定义的辑功Bolt类实现自定义的逻辑,在Flink中如何实现?行复现测第二,Storm按照自定义标准实现数据分发的高级逻辑,在Flink中如何实现?测试
本文主要通过两个最基本的Flink程序实例对上述两个使用Flink测试Strom任务逻辑存在的基本问题进行解答。
第一个问题,何使我们可以通过Flink的对S的逻ProcessFuction类进行实现,通过继承该类,任务在该类的辑功processElement方法中实现自定义逻辑。ProcessFuction类如下图所示,行复现测我们可以通过var1这个参数直接获取当前流中的高级数据,然后进行自定义的云服务器逻辑加工,再通过Collector类var3的collect方法将处理后的数据发送到下一个流中。
假设某一Strom任务的功能逻辑是:① 对初始数据源(一个字符串)末尾添加一个字符串。② 然后再次添加另一个字符串。
我们以上述对字符串加工的Strom任务为例,说明Flink程序如何通过ProcessFuction类对该任务实现复现测试。
(1)Flink主程序,假设初始数据源为“abc”。
(2)第一个业务加工类,给数据流末尾添加“def”。
(3)第二个业务加工类,给数据流末尾添加“ghi”。
(4)执行Flink程序,观察输出结果,“abc”被二次加工为“abcdefghi”。
第二个分发数据的问题,我们假设某一Strom任务的功能逻辑是对数据源(股票对象)进行分类,将股价高于X的分为一类,将股价小于等于X的分为另一类。
我们以上述对股票数据对象分类处理的Strom任务为例,说明Flink程序如何通过旁路输出特性实现对数据流按照自定义标准分类,输出到不同的亿华云子数据流中处理。
Flink 的旁路输出依然涉及ProcessFunction类的processElement方法,该方法的Context类型的var2参数的主要作用是利用其output方法进行旁路输出(我们用于进行数据分流)。
Flink的旁路输出特性可以用来对数据进行分流,通过创建一个流的标签(OutputTag),再利用这个OutputTag标签对象作为参数,调用初始/父级数据流的getSideOutput(OutputTag)方法获取子数据流。
每个流标签都有一个id,也可以不创建对象,只要流标签的id相同,其中的数据就相同。因此,可以通过匿名内部类的形式来获取子数据流。第一个参数是id,第二个参数是数据类型(不能省略)。
(1)创建股票类Stock,属性包括名称和价格。
(2)创建消费消息的Flink程序。源码库
(3)创建生产消息的Flink程序。
我们用“STOCK_LOW_PRICE”和“STOCK_HIGH_PRICE”这两个ID作为两个旁路输出标签的ID。
在processElement方法中,我们通过判断股票的价格是否大于50区分出低价股和高价股,利用Context对象的output方法进行旁路输出,把price小于50的Stock对象输出到ID为“STOCK_LOW_PRICE”的低价股标签旁路中,而把price大于等于50的Stock对象输出到ID为“STOCK_HIGH_PRICE”的高价股标签旁路中。
(4)依次启动消费者程序、生产者程序,观察消费者程序控制台中的输出:
此时,桌面生成了两个文件夹,当中记录了股票数据,result1记录了小于50的低价股,result2中记录了股价大于等于50的高价股。
很赞哦!(383)
相关文章
- 2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
- 外媒评IBM量子计算机:不会改变一切 但可创造历史
- 据说99.99%的人都会答错的类加载问题
- 2019年好用的自动化测试工具Top 10推荐,果断收藏!
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- 90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来
- 我为什么选择 Vue 而不是 React?
- Julia发布全功能调试器:4大新功能问世
- 当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
- 嗯?Python居然可以这么嚣张?这么厉害!到底是为什么?