6

我正在创建一个应该处理大量数据的系统,我需要了解 reduce 组运算符的工作原理

我有一个数据集,我在其中应用了一个 groupby,然后应用了一个 reduceGroup 传递给 reduceGroup 函数的迭代器如何表现?它是在请求数据时加载数据的惰性迭代器,还是在创建时准备内存中所有数据的急切迭代器?

我在 flink 0.9 里程碑1中使用 scala api

4

1 回答 1

4

Flink 使用排序运算符对 groupReduce 执行分组。排序运算符接收一定的内存预算用于排序。只要数据符合这个预算,排序就会在内存中进行。否则,排序将成为外部合并排序并溢出到磁盘。Flink 读取排序后的数据流并“即时”应用 groupReduce 函数。在应用函数之前,组的数据并未完全读取到内存中。因此,如果用户函数本身不具体化组记录,您可以处理非常大的组。

于 2015-05-11T14:46:25.610 回答