【问题标题】:Can Spark store part of a single RDD partition in memory and part on disk?Spark 可以将单个 RDD 分区的一部分存储在内存中,一部分存储在磁盘上吗?
【发布时间】:2019-05-24 12:21:50
【问题描述】:

根据标题:Spark 可以将单个 RDD/Dataset/DataFrame 分区的一部分存储在内存中,一部分存储在磁盘上吗?换句话说,假设持久化级别支持它,如果一个分区太大而无法存储在内存中,是否可以将其部分保存在内存中,部分保存在磁盘中?

我的用例是我想写出非常大的 Parquet 文件,而 Spark 的写行为是为每个分区写出一个文件。

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    恐怕这在 spark 中是不可能的。内存和磁盘选项使用分区作为最小的数据划分。 根据official documentation,如果使用 MEMORY_AND_DISK 存储级别,则将不适合内存的分区保存在磁盘上。

    MEMORY_AND_DISK 将 RDD 作为反序列化的 Java 对象存储在 JVM 中。如果 RDD 不适合内存,存储不适合的分区 磁盘,并在需要时从那里读取它们。

    MEMORY_AND_DISK_SER 具有类似的行为,但将 RDD 存储为序列化的 Java 对象(每个分区一个字节数组)

    也许您有一些方法可以减小分区的大小。我认为这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 2021-11-25
      • 2015-10-11
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 2013-10-23
      相关资源
      最近更新 更多