gun*_*erd 8 python scala apache-spark pyspark
我是Spark的新手,目前通过玩pyspark和spark-shell来探索它.
所以情况就是这样,我用pyspark和spark-shell运行相同的火花作业.
这是来自pyspark:
textfile = sc.textFile('/var/log_samples/mini_log_2')
textfile.count()
Run Code Online (Sandbox Code Playgroud)
而这一个来自火花壳:
textfile = sc.textFile("file:///var/log_samples/mini_log_2")
textfile.count()
Run Code Online (Sandbox Code Playgroud)
我试了两次,第一次(python)完成了30-35秒,而第二次(scala)需要大约15秒.我对可能导致这种不同性能结果的原因感到好奇吗?是因为语言的选择还是火花贝壳在背景中做了一些pyspark不做的事情?
UPDATE
所以我对较大的数据集进行了一些测试,总共大约550 GB(压缩).我使用Spark Standalone作为主人.
我观察到,在使用pyspark时,任务在执行者之间平均分配.但是,在使用spark-shell时,任务不会平等分配.更强大的机器可以获得更多任务,而较弱的机器可以减少任务.
使用火花壳,工作在25分钟内完成,而使用pyspark则大约需要55分钟.如何使用pyspark使Spark Standalone分配任务,因为它使用spark-shell分配任务?


使用 python 有一些开销,但其重要性取决于您正在做什么。尽管最近的报告表明开销并不是很大(特别是对于新的 DataFrame API)
您遇到的一些开销与每个作业的固定开销有关 - 这与大型作业几乎无关。您应该使用更大的数据集进行示例基准测试,并查看开销是否是恒定的添加,或者是否与数据大小成正比。
另一个潜在的瓶颈是为每个元素(地图等)应用 python 函数的操作 - 如果这些操作与您相关,您也应该测试它们。
| 归档时间: |
|
| 查看次数: |
3078 次 |
| 最近记录: |