Apache spark Spark';s reduceByKey使用恒定的内存量,还是使用线性的键数?

Apache spark Spark';s reduceByKey使用恒定的内存量,还是使用线性的键数?,apache-spark,mapreduce,apache-flink,Apache Spark,Mapreduce,Apache Flink,据我所知,Hadoop MapReduce中有一些外部排序和/或解决方案,它们允许在按键对数据进行排序/分组时使用恒定的内存量,而不是更多,以便通过每个键的聚合函数进行进一步的管道传输 假设还原状态也是一个常量,就像加法一样 apachespark或Flink是否也可以使用这种常量内存分组/排序,如果可以,在reduceByKey或aggregateByKey的情况下,是否有任何特定的配置或编程方式要求这种恒定内存处理方式?两个系统都需要隐式执行该操作,因为Java进程只获得固定数量的主内存。请

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

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


apachespark或Flink是否也可以使用这种常量内存分组/排序,如果可以,在reduceByKey或aggregateByKey的情况下,是否有任何特定的配置或编程方式要求这种恒定内存处理方式?

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

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

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


BTW,你可以考虑Spand和Flink来取代Hadoop MapReduce。MapReduce可能能够击败下一代系统的只是几个边缘案例

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

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

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

BTW,你可以考虑Spand和Flink来取代Hadoop MapReduce。MapReduce可能能够击败下一代系统的只是几个边缘案例