【问题标题】:Python vs Scala (for Spark jobs)Python 与 Scala(用于 Spark 作业)
【发布时间】: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


    【解决方案1】:

    使用 python 有一些开销,但它的重要性取决于你在做什么。 尽管最近的报告表明开销不是很大 (specifically for the new DataFrame API)

    您遇到的一些开销与每个作业的固定开销有关 - 这与大型作业几乎无关。 您应该使用更大的数据集进行示例基准测试,并查看开销是否是不断增加的,或者它是否与数据大小成正比。

    另一个潜在的瓶颈是对每个元素(地图等)应用 python 函数的操作 - 如果这些操作与您相关,您也应该对其进行测试。

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 2020-08-23
      • 2015-12-04
      • 1970-01-01
      • 2015-11-28
      • 2015-10-23
      • 2015-04-13
      相关资源
      最近更新 更多