这可能是一个愚蠢的问题。我想确保我正确理解了这一点。
当你将一个巨大的文件(400GB)加载到一个集群中,其中集体执行器内存只有约120GB时,Spark似乎会一直读取。它不会崩溃,也不会启动第一个映射任务。
我认为正在发生的事情是,Spark正在以流的形式阅读大型文件,并在执行器耗尽内存时开始丢弃旧行。当.map代码开始执行时,这显然可能会成为一个问题,因为执行器jvm将再次从文件开头读回文件。但我想知道的是,Spark是否以类似于洗牌溢出机制的方式将数据溢出到硬盘上。
请注意,我没有提到缓存过程。这与使用sc.textFile(filename)进行初始读取有关。
我认为正在发生的事情是,Spark正在以流的形式阅读大型文件,并在执行器耗尽内存时开始丢弃旧行。当.map代码开始执行时,这显然可能会成为一个问题,因为执行器jvm将再次从文件开头读回文件。但我想知道的是,Spark是否以类似于洗牌溢出机制的方式将数据溢出到硬盘上。
请注意,我没有提到缓存过程。这与使用sc.textFile(filename)进行初始读取有关。