gpt4 book ai didi

apache-spark - Spark 数据集超过总内存大小

转载 作者:可可西里 更新时间:2023-11-01 14:45:09 24 4
gpt4 key购买 nike

我最近在 spark 工作,遇到了一些我仍然无法解决的问题。

Let's say i have a dataset of 100GB and my ram size of the cluster is 16 GB.

现在,我知道只要读取文件并将其保存在 HDFS 中就可以了,因为 Spark 会为每个分区执行此操作。对100GB的数据进行排序或聚合转换会发生什么?由于排序时需要完整数据,它将如何处理 100GB 内存?

我已经浏览了下面的链接,但这只告诉我们 spark 在持久化的情况下会做什么,我正在寻找的是 Spark 聚合或对大于 ram 大小的数据集进行排序。

Spark RDD - is partition(s) always in RAM?

感谢任何帮助。

最佳答案

您可能想知道两件事。

  1. 一旦 Spark 达到内存限制,它将开始将数据溢出到磁盘。请检查此 Spark faq还有几个来自 SO 的问题谈论相同,例如 this one .
  2. 有一个算法叫做external sort这允许您对不适合内存的数据集进行排序。本质上,您将大型数据集划分为实际适合内存的 block ,对每个 block 进行排序并将每个 block 写入磁盘。最后,合并每个排序的 block 以使整个数据集排序。 Spark 支持外部排序,如您所见herehere是实现。

回答你的问题,你并不真的需要你的数据适合内存才能对其进行排序,正如我之前向你解释的那样。现在,我鼓励您考虑一种数据聚合算法,将数据按 block 划分,就像外部排序一样。

关于apache-spark - Spark 数据集超过总内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49887173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com