当前位置: 首页 > 知识库问答 >
问题:

为什么我的Spark比纯Python跑得慢?性能比较

锺离赤岩
2023-03-14
train_df.filter(train_df.gender == '-unknown-').count()

2)在火花中:

sqlContext.sql("SELECT gender, count(*) FROM train GROUP BY gender").show()

同样的,在Spark中需要30秒,在Python中需要1秒。

我的Spark比纯Python慢得多的几个可能原因:

共有1个答案

车峻熙
2023-03-14

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

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

1)我的数据集大约有220,000条记录,24 MB,这个数据集还不足以显示Spark的扩展优势。

3)本地运行还可以,但我的计算能力并不能削弱它。这是一个8 Gig RAM 2015 MacBook。

同样,对于20MB的数据集来说,这并不重要。

4)Spark很慢,因为我运行的是Python。如果我使用Scala,它会好得多。(错误的论点:我听说很多人都很好地使用PySpark。)

 类似资料:
  • 问题内容: 我在Spark中执行联接。 大表是1,76Gb,拥有1亿条记录。 第二个表为273Mb,记录为1000万。 我得到一个,并呼吁count(): 如果我强制并在具有8个核心和20Gb内存的5个节点上使用5个执行程序,则它将在100秒内执行。如果我不强制播放,它将在30秒内执行。 注意,表存储为Parquet文件。 问题答案: 问题的根源很可能是广播成本。为了简单起见,假设您在较大的RDD

  • 问题内容: 今天,我做了一些快速基准测试来测试and的速度性能: 结果如下: 为什么运行速度差异如此之大? 基准系统: 问题答案: 从这个Oracle博客中: 使用GetSystemTimeAsFileTime方法实现该方法,该方法本质上只是读取Windows维护的低分辨率日期时间值。读取此全局变量自然非常快- 根据报告的信息,大约需要6个周期。 使用 (如果可用,则返回。)实现,具体取决于运行的

  • 内置函数是否低效地执行序列化/反序列化过程?如果是,有哪些替代方案? 数据集是否太小,以至于无法超过运行spark的底层JVM的开销? 谢谢你找我。非常感谢。

  • 问题内容: 我有一个简单的任务:计算每个字母在一个字符串中出现的次数。我已经使用了它,但是在一个论坛上我看到了使用/比每个字母都要慢得多的信息。我认为它只能在字符串中进行一次遍历,而解决方案则必须遍历该字符串四次(在这种情况下)。为什么这么慢? 问题答案: 允许您计算任何可哈希对象,而不仅仅是子字符串。两种解决方案都是-time。您的测量结果表明,迭代和散列单个字符的开销大于运行4倍。 可以 使用

  • 下面的代码将简单的值持有者映射到一个对象,它在Java中的运行速度比使用XCode 7 beta3“最快、积极的优化[-ofast]”的Objective-C快15倍以上。在Java中,我可以获得超过280m/sec的查找,但在objc示例中只有大约19m。(我在这里发布了相应的Java代码,因为这是作为一个Swift比较开始的:Swift Dictionary即使经过优化也很慢:是否不断保留/发

  • 维基百科说A*在O(E)中运行,其中E是图中的边数。但我的朋友说a*只是Dijkstra算法的一般情况,而Dijkstra算法运行在O(E+V log V)中。所以我很困惑为什么A*比Dijkstra的算法跑得更快。