Apache flink 如何使用Flink dataset API计算源中读取的总记录数

Apache flink 如何使用Flink dataset API计算源中读取的总记录数,apache-flink,Apache Flink,我们目前使用Flink DataSet API从文件系统读取文件并应用一些批处理转换。我们还希望获得作业完成后处理的总记录。 管道类似于dataset.map().filter() count()函数似乎是一个非并行运算符,需要从all数据集中进行额外计算 是否有任何方法可以在map操作符中对处理过的记录进行计数,并提供一个像流式处理这样的副输出,以便我们可以将它们聚合起来以获得总计数?还是其他更好的方法 多谢各位 您可能想使用。这些计数器允许您为每个任务输出小的统计信息,这些统计信息在作业完成

我们目前使用Flink DataSet API从文件系统读取文件并应用一些批处理转换。我们还希望获得作业完成后处理的总记录。 管道类似于
dataset.map().filter()

count()函数似乎是一个非并行运算符,需要从all数据集中进行额外计算

是否有任何方法可以在map操作符中对处理过的记录进行计数,并提供一个像流式处理这样的副输出,以便我们可以将它们聚合起来以获得总计数?还是其他更好的方法


多谢各位

您可能想使用。这些计数器允许您为每个任务输出小的统计信息,这些统计信息在作业完成时自动累积。

似乎我需要额外的运算符来进行计数,这意味着我必须对数据集进行两次迭代才能获得原始结果和计数。有没有什么方法可以将计数逻辑集成到map/flatmap操作符中,并生成另一个数据集来进行计数?我认为这个线程确实回答了这个问题;)其思想是,您需要在一台机器上进行部分计数,才能进行最终计数。因此,您需要计算每个键的值,然后在一台机器上计算所有键的总计数。您好,如何在分离的Fink flink作业中获得计数器结果?计数器通常在您的驱动程序中计算(调用
execute
main
)。一旦
execute
完成,您就可以以任何方式发布结果。它似乎只适用于附加模式提交。如果有人在mdoe中向纱线提交作业。客户端程序在我调用execute()后结束,我无法获得任何提交结果。啊,对不起,没有想到客户端在集群之外。通常,在分离模式下,在
execute
之后,除非等待结果,否则无法在客户机中执行有意义的操作,这违背了分离执行的目的。我将用一些备选方案更新我的答案。