开发者社区> 问答> 正文

关于GroupCombine对部分结果的澄清

Flink的GroupCombine州文件:

注意:分组数据集上的GroupCombine在内存中使用贪心算法执行,该策略可能不会一次处理所有数据,而是以多个步骤处理。它也可以在各个分区上执行,而无需像GroupReduce转换那样进行数据交换。这可能会导致不完整的结果。

对于完整(非分组)DataSets,请注意以下注释:

完整DataSet上的GroupCombine与分组DataSet上的GroupCombine类似。数据在所有节点上分区,然后以贪心算法组合(即,只有一次合并到存储器中的数据)。

这是否意味着如果我的数据集包括,例如:

1
2
3
我想生成所有成对组合

(1, 2), (1, 3), (2, 3)
我不能通过GroupCombine转换以一般方式实现它,因为它不能保证整个组适合给定分区的内存?

展开
收起
社区小助手 2018-12-11 16:08:28 1867 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    GroupCombine在Flink中是一个非确定性的操作。它通常用于执行部分计算(如聚合),然后执行类似于GroupReduce消耗部分结果的确定性操作。GroupCombine通常用于通过执行较便宜的本地内存计算来降低确定性操作的成本。

    如果您需要对记录组进行计算确定性结果,则应使用GroupReduce

    2019-07-17 23:19:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
翻译是一种分享 为的是让我们更好的与世界沟通 立即下载
持续交付背后的故事:重构性格成为优秀的叛逆者 立即下载
研发过程中的那些反模式 立即下载

相关实验场景

更多