【发布时间】:2015-08-09 06:35:16
【问题描述】:
我对 Spark 很陌生,目前正在通过使用 pyspark 和 spark-shell 来探索它。
所以情况就是这样,我使用 pyspark 和 spark-shell 运行相同的 spark 作业。
这是来自 pyspark:
textfile = sc.textFile('/var/log_samples/mini_log_2')
textfile.count()
这个来自 spark-shell:
textfile = sc.textFile("file:///var/log_samples/mini_log_2")
textfile.count()
我尝试了几次,第一个(python)一个需要 30-35 秒才能完成,而第二个(scala)大约需要 15 秒。我很好奇是什么导致了这种不同的性能结果?是因为语言的选择还是 spark-shell 在后台做一些 pyspark 没有做的事情?
更新
所以我对更大的数据集进行了一些测试,总共大约 550 GB(压缩)。我正在使用 Spark Standalone 作为主机。
我观察到,在使用 pyspark 时,任务在执行者之间是平等共享的。然而,当使用 spark-shell 时,任务不会被平均分配。更强大的机器得到更多的任务,而更弱的机器得到更少的任务。
使用 spark-shell,工作在 25 分钟内完成,使用 pyspark 大约需要 55 分钟。如何让 Spark Standalone 使用 pyspark 分配任务,因为它使用 spark-shell 分配任务?
【问题讨论】:
标签: python scala apache-spark pyspark