可以看看现有metrics是否满足需求,例如numRecordsInPerSecond。 详细可以参考https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html#io
------------------------------------------------------------------ 发件人:张江 <[email protected]> 发送时间:2020年1月2日(星期四) 19:24 收件人:user-zh <[email protected]> 抄 送:user-zh <[email protected]> 主 题:回复:如何获取算子处理一条数据记录的时间 我其实是想知道算子的数据处理能力,得到一个算子每秒钟最多能处理多少条数据。比如说map算子,我需要知道它一秒钟最多能转换多少数据,之后根据source端的数据量来设置算子的并行度 | | 张江 | | 邮箱:[email protected] | 签名由 网易邮箱大师 定制 在2020年01月02日 10:28,猫猫 写道: 只有如下算子支持测流输出。 ProcessFunction CoProcessFunction ProcessWindowFunction ProcessAllWindowFunction 如果要计时的话,需要将你的逻辑全部放到相关函数中。在逐条处理的时候,记录数据ID和时间,写成一个新的数据流并行输出出去。 但实际上我们很少这样做,因为很难将所有逻辑全部放到一个算子中。 比较常见的方式是,在整体上数据有流入和流出,所以增加流入和流出算子,在数据经过的时候,记录数据ID,并形成新的数据流,然后写入到数据库进行合并就行了。 这种可以考虑采样的方式,例如根据ID取模获取数据,但缺点是监控嵌入了执行逻辑,并且必须有并行度为1的统计算子,可能会影响性能。 更为合理的看法是,当数据量不堆积的时候,时间也不是问题。 我们只要看kafka-offset的消费速度就行了。一定时间消费多少条,平均下来就是速率的。适用于压满性能的时候用。 可能还有更好的处理方式,我还没有了解,flink好像自身也有一定的监控能力。 但你的需求到底是什么?你为什么要知道一条数据的处理时间?而不是一批数据的处理时间? 你关心每个算子的时间,还是关心数据整体的处理时间?还是关心某个业务的执行时间? 提供一下场景为佳。 ------------------ 原始邮件 ------------------ 发件人: "张江"<[email protected]>; 发送时间: 2020年1月2日(星期四) 上午9:27 收件人: "user-zh"<[email protected]>; 抄送: "user-zh"<[email protected]>; 主题: 回复:如何获取算子处理一条数据记录的时间 可以讲的详细点么 非常感谢 | | 张江 | | 邮箱:[email protected] | 签名由 网易邮箱大师 定制 在2020年01月02日 08:09,猫猫 写道: 算子内记时,测流输出。 ------------------&nbsp;原始邮件&nbsp;------------------ 发件人:&nbsp;"张江"<[email protected]&gt;; 发送时间:&nbsp;2020年1月1日(星期三) 晚上8:44 收件人:&nbsp;"user-zh"<[email protected]&gt;; 主题:&nbsp;回复:如何获取算子处理一条数据记录的时间 有人知道么 | | 张江 | | 邮箱:[email protected] | 签名由 网易邮箱大师 定制 在2019年12月31日 17:14,张江 写道: Hi, 我是刚学习flink的菜鸟,现在想对一个算子,获取其处理一条数据记录的时间。请问这个应该怎么做? 谢谢 | | 张江 | | 邮箱:[email protected] | 签名由 网易邮箱大师 定制
