据我所知,存在外部排序和/或在Hadoop MapReduce中的解决方案,这些解决方案在按键对数据进行排序/分组以允许通过每个键的聚合函数进行进一步管道传输时,允许使用恒定数量的内存,而不用更多内存。
假定还原状态也是一个常数,就像加法一样。
这种恒定内存分组/排序是否也可用于Apache Spark或Flink,如果可以,在reduceByKey或AggregateByKey的情况下,是否有任何特定的配置或编程方式要求这种恒定内存的处理方式?
这两个系统都需要隐式执行该操作,因为Java进程仅获得固定数量的主内存。请注意,当要排序的数据变得更大时,需要将数据溢出到磁盘上。对于排序并根据您的查询,这可能意味着需要在主内存和磁盘上实现完整的数据集。