我有以下DAG
saveAsNewAPIHadoopDataset
)saveAsNewAPIHadoopDataset
)磁盘上RDD的大小为 100GB
完成第一个操作所需的总时间(步骤4) 10分钟
我原本以为对于第二个动作(步骤6),RDD将从磁盘过滤等加载。花费的时间要短得多。
但事实上它需要相同的时间 10分钟!
从磁盘加载100GB rdd真的花费与生成rdd相同的时间吗?
有什么可以解释这个?我是否遇到某种IO瓶颈?如何解决这个问题?
答案 0 :(得分:0)
作业链:您希望使用一个作业运行多个作业,具体取决于之前的输出。
MapReduce pardigm:1MR job =>将输出保存在HDFS =>从HDFS 2读取MR作业=> .......
Spark =>尝试在内存中保存尽可能多的数据,否则我们会陷入MapReduce范式的低效率。
现在回答你的问题:
- Spark会在保存磁盘上的数据时进行一些优化,但与内存中的数据相比没有。
- Spark生成一系列MapTask和Reduce Task。我们应尽量在内存中保存尽可能多的数据,最好的情况下尝试完成 只有一项MR任务的任务。
醇>
如果深思熟虑,请按照
http://bytepadding.com/big-data/spark/understanding-spark-through-map-reduce/