2015-07-03 21 views
0

的我在占据在HDFS两个街区,复制在两个节点上,A和B.每个节点的数据集的副本的CSV文件的数据集。位置HadoopPartition

当Spark开始处理数据时,我已经看到Spark如何将数据集加载为输入的两种方式。它要么将整个数据集加载到一个节点的内存中,并执行其中的大部分任务,要么将数据集加载到两个节点中,并将两个节点上的任务溢出(基于我在历史记录服务器上观察到的情况)。对于这两种情况,都有足够的能力将整个数据集保存在内存中。

我重复了多次相同的实验,Spark似乎在这两种方式之间交替。假设Spark继承了MapReduce作业中的输入分割位置。根据我的理解,MapReduce应该能够利用两个节点。我不明白为什么Spark或MapReduce会在两种情况之间交替。

当只有一个节点用于处理时,性能较差。

回答

0

当您加载在星火的数据,您可以指定分割的最小数目,这将迫使星火加载多台机器上的数据(与文本文件API,您会增加minPartitions=2您的来电。