我有一个驱动程序,运行一组5个实验 - 基本上驱动程序只是告诉程序使用哪个数据集(其中有5个,它们非常相似)。
第一次迭代需要3.5分钟,第二次6分钟,第三次30分钟,第四次运行超过30分钟。
每次运行后,SparkContext
对象停止,然后重新启动以进行下一次运行 - 我认为此方法可以防止减速,因为调用sc.stop
时我感觉不到实例被清除了所有RDD数据 - 这至少是它在本地模式下的工作方式。数据集非常小,根据Spark UI,仅使用2个节点上的20Mb数据。
sc.stop
不会从节点中删除所有数据吗?什么会导致这么慢?
答案 0 :(得分:0)
sc.stop
。每当我们停止SparkContenxt并调用new时,需要时间来加载spark配置,jar和免费驱动程序端口来执行下一个作业。
和--executor-memory
可以加快进程,具体取决于每个节点的内存量。 答案 1 :(得分:0)
愚蠢的是,我曾经使用过T2实例。它们的爆破性能意味着它们只能在很短的时间内全功率工作。彻底阅读文档 - 学到的经验教训!