为什么我的 Spark 运行 比纯 Python 慢?性能比较

Why does my Spark run slower than pure Python? Performance comparison

这里是 Spark 新手。我尝试使用 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 在本地 运行ning,我应该 运行 它在 Amazon EC 之类的东西中。

3) 运行 本地没问题,但我的计算能力就是不行。这是 8 Gig RAM 2015 Macbook。

4) Spark 很慢,因为我运行宁Python。如果我使用 Scala 会好得多。 (反对论点:我听说很多人都在使用 PySpark。)

以下哪一项最有可能是原因,或者最可信的解释?我很想听听一些 Spark 专家的意见。非常感谢!!

Python 在较小的数据集上肯定会比 pyspark 表现更好。当你处理更大的数据集时,你会看到差异。

默认情况下,当您 运行 在 SQL 上下文或 Hive 上下文中启动时,默认情况下它将使用 200 个分区。您需要使用 sqlContext.sql("set spark.sql.shuffle.partitions=10"); 将其更改为 10 或任何值。它肯定会比默认更快。

1) My dataset is about 220,000 records, 24 MB, and that's not a big enough dataset to show the scaling advantages of Spark.

你是对的,在较低的音量下你不会看到太大的差异。 Spark 也可能更慢。

2) My spark is running locally and I should run it in something like Amazon EC instead.

对于您的音量,它可能没有多大帮助。

3) Running locally is okay, but my computing capacity just doesn't cut it. It's a 8 Gig RAM 2015 Macbook.

同样,对于 20MB 的数据集也无所谓。

4) Spark is slow because I'm running Python. If I'm using Scala it would be much better. (Con argument: I heard lots of people are using PySpark just fine.)

单独使用会有差异。 Python 比 scala 有更多 运行 的时间开销,但在具有分布式功能的更大集群上,这无关紧要