Spark 作业的大输入数据

Big input data for Spark job

我在一个文件夹输入下有1800个*.gz文件。每个*.gz文件300M左右,解压后每个文件3G左右。解压后一共5400G

我无法拥有 5400G 执行程序内存的集群。是否可以读取输入文件夹下的所有文件,如下所示?

JavaRDD 行数 = ctx.textFile("input");

那么这项工作需要多少执行器内存? Spark如何处理数据无法全部装入内存的情况?

谢谢!

创建指向文本文件目录的 RDD 对象本身不会将任何数据集加载到内存中。只有当您告诉 Spark 处理数据时,数据才会加载到内存中,并且在许多(大多数?)情况下,这仍然不需要将完整的数据集同时存储在内存中。您的 5.4TB 数据集需要多少内存实际上取决于您要用它做什么。

也就是说,对于如何在加载 RDD 时持久化 RDD 有多种选择。默认情况下,Spark 只会将数据保存在内存中,但也有一些配置可以在没有可用内存时溢出到磁盘。 Spark programming guide.

中对此有很好的描述