为什么我的 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 有更多 运行 的时间开销,但在具有分布式功能的更大集群上,这无关紧要
这里是 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 有更多 运行 的时间开销,但在具有分布式功能的更大集群上,这无关紧要