gpt4 book ai didi

apache-spark - Apache Spark 内存不足,分区数量较少

转载 作者:行者123 更新时间:2023-12-04 00:38:23 26 4
gpt4 key购买 nike

我有一个 Spark 应用程序内存不足,集群有两个节点,RAM 大约为 30G,输入数据大小大约为几百 GB。

该应用程序是一个 Spark SQL 作业,它从 HDFS 读取数据并创建一个表并缓存它,然后执行一些 Spark SQL 查询并将结果写回 HDFS。

最初我将数据分成 64 个分区,结果出现了 OOM,然后我能够通过使用 1024 个分区来解决内存问题。但是为什么使用更多的分区可以帮助我解决 OOM 问题?

最佳答案

大数据的解决方案是分区(分而治之)。由于并非所有数据都可以放入内存中,因此也无法在一台机器上进行处理。
每个分区都可以在相对较短的时间内装入内存并处理(映射)。在为每个分区处理数据之后。它需要合并(减少)。这是传统 map reduce
将数据拆分到更多分区意味着每个分区越来越小。
[编辑]
Spark 使用称为弹性分布式数据集(RDD)的革命性概念。

  • 有两种类型的操作,transformation 和acton
  • 转换是从一个 RDD 映射到另一个。它是懒惰的评估。那些 RDD 可以被视为我们不想得到的中间结果。
  • 当您确实想要获取数据时使用操作。那些 RDD/data 可以被视为我们想要的东西,就像 take top failed 一样。
  • Spark 会在执行前分析所有操作并创建一个 DAG(有向无环图)。
  • 当操作被触发时,Spark 从源 RDD 开始计算。然后忘记它。

  • Spark DAG
    (来源: cloudera.com)
    我为 Youtube 上的演示做了一个小截屏 Spark Makes Big Data Sparking .

    关于apache-spark - Apache Spark 内存不足,分区数量较少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38133744/

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