【问题标题】:Apache Flink - DataSet API - How to group n results togetherApache Flink - DataSet API - 如何将 n 个结果组合在一起
【发布时间】:2018-06-27 19:41:22
【问题描述】:

我们正在使用 Apache Flink(1.4.2) 进行批处理,出于性能原因而不是直接输出每个项目,我们希望在输出之前对 100 个项目进行分组。

如果我们要使用 DataStream API,我们将能够使用像翻滚窗口这样的东西 (https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html#tumbling-windows)

但这在做批处理时不可用。

是否有可能使用 DataSet Api 通过一些 group / reduce 函数来做到这一点?

【问题讨论】:

  • 应该可以。试试看。

标签: batch-processing apache-flink


【解决方案1】:

如果记录可以任意批处理在一起,我不会使用groupByreducegroupReduce,因为它们会不必要地对DataSet 进行打乱和排序。

相反,您可以使用MapPartitionFunction 一起批处理记录。 MapPartition 在分区的所有记录上接收迭代器,并可以通过收集器发出记录。由于它只是消费记录而不重新组织它们(洗牌、排序),因此非常高效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多