首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的Spark运行得比纯Python慢?性能比较

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

Stack Overflow用户
提问于 2016-01-06 12:00:34
回答 1查看 11.4K关注 0票数 12

新手来了。我试图用Spark在我的数据框上做一些pandas操作,令人惊讶的是,它比纯Python慢(即在Python中使用pandas包)。下面是我所做的:

1)在Spark中:

代码语言:javascript
运行
复制
train_df.filter(train_df.gender == '-unknown-').count()

返回结果大约需要30秒。但是使用Python大约需要1秒。

2)在Spark中:

代码语言:javascript
运行
复制
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)本地运行是可以的,但我的计算能力就是不能削减它。这是一款内存为8G的2015款Macbook。

4) Spark很慢,因为我在运行Python。如果我使用的是Scala,那就更好了。(反对论点:我听说很多人都在使用PySpark。)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-06 19:17:23

在较小的数据集上,与pyspark相比,Python的性能肯定会更好。当您处理更大的数据集时,您将看到不同之处。

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

1)我的数据集大约有220,000条记录,24MB,这不是一个足够大的数据集,无法显示Spark的缩放优势。

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

2)我的spark在本地运行,我应该在类似亚马逊EC的环境中运行它。

对于你的体积来说,它可能没有多大帮助。

3)在本地运行是可以的,但我的计算能力就是不能解决这个问题。这是一款内存为8G的2015款Macbook。

同样,对于20MB数据集,这也无关紧要。

4) Spark很慢,因为我在运行Python。如果我使用的是Scala,那就更好了。(反对论点:我听说很多人都在使用PySpark。)

在独立的情况下,将会有所不同。与scala相比,Python有更多的运行时开销,但在具有分布式功能的大型集群上,这并不重要

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34625410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档