gpt4 book ai didi

Python 与 Scala(用于 Spark 作业)

转载 作者:太空狗 更新时间:2023-10-29 21:11:02 24 4
gpt4 key购买 nike

我是 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 分配任务一样?

spark-shell

Pyspark

最佳答案

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

您遇到的一些开销与每个作业的恒定开销有关——这与大型作业几乎无关。您应该用更大的数据集做一个样本基准测试,看看开销是否是一个常数,或者它是否与数据大小成正比。

另一个潜在的瓶颈是为每个元素( map 等)应用 python 函数的操作 - 如果这些操作与您相关,您也应该测试它们。

关于Python 与 Scala(用于 Spark 作业),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30477982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com