【发布时间】:2016-01-06 04:00:34
【问题描述】:
在这里激发新手。我尝试使用 Spark 对我的数据框执行一些 pandas 操作,令人惊讶的是它比纯 Python 慢(即在 Python 中使用 pandas 包)。这是我所做的:
1) 在 Spark 中:
train_df.filter(train_df.gender == '-unknown-').count()
返回结果大约需要 30 秒。但是使用 Python 大约需要 1 秒。
2) 在 Spark 中:
sqlContext.sql("SELECT gender, count(*) FROM train GROUP BY gender").show()
同样的,Spark 大约需要 30 秒,Python 大约需要 1 秒。
我的 Spark 比纯 Python 慢得多的几个可能原因:
1) 我的数据集大约有 220,000 条记录,24 MB,这不是一个足够大的数据集来显示 Spark 的扩展优势。
2) 我的 spark 在本地运行,我应该在 Amazon EC 之类的地方运行它。
3) 在本地运行是可以的,但我的计算能力并没有削减它。这是 8 Gig RAM 2015 Macbook。
4) Spark 很慢,因为我正在运行 Python。如果我使用 Scala 会好很多。 (反对意见:我听说很多人都在使用 PySpark。)
其中哪一项是最可能的原因,或者最可信的解释?我很想听听一些 Spark 专家的意见。非常感谢!!
【问题讨论】:
-
使用
pyspark并不是真正的问题——Spark 进程仍然是用 Scala 编写的,你如何与它交互并不影响它有一个 Java 后端这一事实。真正的问题是您的数据集/计算不够大或不够重要,无法克服使用 Spark 引入的协调开销和延迟(24 MB 数据仍处于本地计算领域)。 Spark 对于并行处理很有用,但您需要有足够的工作/计算来“吃掉” Spark 引入的开销。
标签: python performance apache-spark pyspark apache-spark-sql