Spark是否可以将单个RDD分区的一部分存储在内存中,而部分存储在磁盘上?

时间:2019-05-24 02:26:06

标签: apache-spark pyspark

每个标题:Spark可以将单个RDD / Dataset / DataFrame分区的一部分存储在内存中,而部分存储在磁盘上吗?换句话说,假设持久性级别支持该功能,那么如果分区太大而无法存储在内存中,能否将其部分保存在内存中并且部分保存在磁盘上?

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

1 个答案:

答案 0 :(得分:2)

恐怕这不可能。内存和磁盘选项将分区用作最小的数据分区。 根据{{​​3}},如果使用了MEMORY_AND_DISK存储级别,则将不适合内存的分区保存在磁盘上。

  

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

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

也许您可以用某种方法来减小分区的大小。我认为这可能会有所帮助。