Spark中的内存分配

时间:2018-04-17 15:16:31

标签: apache-spark

我正在学习Spark并试图理解,例如,为什么iSpark会做以下事情:

我在Spark中有三个主要的事情,一个接一个,让我们称之为处理器。所有这些都不依赖于彼此。 1.打开.csv文件,执行一些处理和计算,例如分组,查找均值,中位数等。(ProcessorOne) 2.打开另一个.csv文件,执行不同的处理。(ProcessorTwo) 3.打开第三个文件,执行另一个计算。(ProcessorThree)

我希望Spark能够在完成第一个之后启动ProcessorTwo。 但是在日志输出中,我看到第3部分,第2部分,第1部分混合的声明。 例如,我可以看到它在ProcessorThree中提交任务,但我还没有看到ProcessorOne的结果。

18/04/17 15:03:56 INFO scheduler.DAGScheduler: Submitting 31 missing tasks from Stage 6 (MapPartitionsRDD[17] at mapToPair at ProcessorThree.java:99)

最初,我想,它应该首先完成ProcessorOne。

我想,在完成ProcessorOne后,它将分配内存来读取ProcessorTwo中的文件,并释放内存。这是否意味着它首先为所有处理器分配内存? 为什么它对我很重要当我在小数据集上运行我的应用时 - 没关系。但是当我增加每个处理器使用的数据量时,它开始放慢速度并永远完成我的应用程序。

0 个答案:

没有答案