首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark的reduceByKey是使用固定数量的内存,还是按键数量的线性内存?

问Spark的reduceByKey是使用固定数量的内存,还是按键数量的线性内存?
EN

Stack Overflow用户
提问于 2020-01-17 00:18:30
回答 1查看 58关注 0票数 1

据我所知,有外部排序和/或Hadoop MapReduce的解决方案,允许在按键对数据进行排序/分组时使用恒定数量的内存,以便通过每个键的聚合函数进行进一步的管道传输。

假设reduce状态也是一个常量,就像加法一样。

这种常量内存分组/排序是否也适用于Apache Spark或Flink,如果是这样的话,在reduceByKey或aggregateByKey的情况下,是否有任何特定的配置或编程方法来要求这种常量内存处理方式?

EN

回答 1

Stack Overflow用户

发布于 2020-01-17 04:25:36

这两个系统都需要隐式地执行操作,因为Java进程只获得固定数量的主内存。请注意,当要排序的数据变得更大时,需要将数据溢出到磁盘上。在排序的情况下,根据您的查询,这可能意味着整个数据集需要在主内存和磁盘上具体化。

如果您询问是否可以限制特定操作符的内存消耗,那么事情看起来要复杂得多。您可以将应用程序限制为一个特定的操作,并使用全局内存设置来限制消耗,但这将导致复杂的设置。

您是否有特定的用例,需要限制特定操作的内存?

顺便说一句,你可以考虑用Spark和Flink来取代Hadoop MapReduce。只是在一些边缘情况下,MapReduce可能能够击败下一代系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59773822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档