Apache Flink:如何计算数据流中的事件总数

2023-12-07

我有两个原始流,我正在加入这些流,然后我想计算已加入的事件总数和未加入的事件总数。我正在通过使用地图来做到这一点joinedEventDataStream如下所示

joinedEventDataStream.map(new RichMapFunction<JoinedEvent, Object>() {

            @Override
            public Object map(JoinedEvent joinedEvent) throws Exception {

                number_of_joined_events += 1;

                return null;
            }
        });

问题#1:这是计算流中事件数量的适当方法吗?

问题2:我注意到了一种有线行为,你们中的一些人可能不相信。问题是,当我在 IntelliJ IDE 中运行 Flink 程序时,它显示了正确的值number_of_joined_events but 0当我提交这个程序时jar。所以我得到的初始值number_of_joined_events当我运行该程序时jar文件而不是实际计数。为什么只有在以下情况才会发生这种情况jar文件提交而不是在IDE中?


你的方法不起作用。您在通过 JAR 文件执行程序时注意到的行为是预期的。

我不知道怎么办number_of_joined_events已定义,但我假设它是程序中的静态变量。当您在 IDE 中运行该程序时,它在单个 JVM 中运行。因此,所有运算符都可以访问静态变量。当您将 JAR 文件提交到远程进程时,该程序将在不同的 JVM(可能是多个 JVM)中执行,并且客户端进程中的静态变量永远不会更新。

您可以使用 Flink 的指标或ReduceFunction总和1s 计算已处理记录的数量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Flink:如何计算数据流中的事件总数 的相关文章

随机推荐