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

为什么Apache-Spark-Python在本地比熊猫慢?

尹凌龙
2023-03-14
pyspark --master local[2]
  1. 内置函数是否低效地执行序列化/反序列化过程?如果是,有哪些替代方案?
  2. 数据集是否太小,以至于无法超过运行spark的底层JVM的开销?

谢谢你找我。非常感谢。

共有1个答案

穆睿才
2023-03-14

因为:

  • Apache Spark是一个复杂的框架,旨在将处理分布在数百个节点上,同时确保正确性和容错性。这些属性中的每一个都有很大的成本。
  • 因为纯粹的内存内核内处理(Pandas)比磁盘和网络(甚至本地)I/O(Spark)快几个数量级。
  • 因为并行性(和分布式处理)增加了大量的开销,而且即使具有最佳的(令人尴尬的并行工作负载)也不能保证任何性能改进。
  • 因为本地模式不是为性能而设计的。它用于测试。
  • 最后但并非最不重要的--在393MB上运行2个内核不足以看到任何性能改进,单个节点也不能提供任何分发机会
  • 还有Spark:在缩放核的数量中不一致的性能数,为什么pyspark在寻找列的最大值时要慢得多?,为什么我的Spark比纯Python运行得慢?性能比较

你可以这样持续很长时间...

 类似资料:
  • 问题内容: 这里是Spark新手。我最近开始使用以下命令在两个内核的本地计算机上使用Spark: 我有一个393Mb的文本文件,其中包含近一百万行。我想执行一些数据操作操作。我使用的是内置PySpark的数据帧的功能进行简单的操作,如,,,。 但是,当我在完全相同的数据集上对熊猫进行完全相同的操作时,就延迟而言,熊猫似乎在很大程度上击败了pyspark。 我想知道这可能是什么原因。我有几点想法。

  • 问题内容: 我有一个熊猫数据框,我想根据是否满足某些条件进行过滤。我跑了一个循环,然后用来测试速度。数据集大约有45000行。循环的代码片段为: 每个循环1.44 s±3.7毫秒(平均±标准偏差,共7次运行,每个循环1次) 而且是: 每个循环6.71 s±54.6 ms(平均±标准偏差,共7次运行,每个循环1次) 我认为应该比循环遍历大熊猫更快。有人可以解释为什么在这种情况下速度变慢吗? 问题答案

  • 2)在火花中: 同样的,在Spark中需要30秒,在Python中需要1秒。 我的Spark比纯Python慢得多的几个可能原因:

  • 我把这个贴在我认为是答案的地方,因为我在这里找不到类似的问题答案。 Python 3.6: 这与浮点表示或我的平台(Mac OS X)有关吗?

  • 问题内容: in Pandas中in的功能到底是什么? 问题答案: 当你什么都不懂的时候是你的朋友。它清除了很多次疑问。 看一看: 输出: 当您使用的键将成为新数据框中的索引时。 将列设置为索引时,将获得以下好处: 速度。 当您基于索引列过滤值时,例如 ,因为索引列的散列会更快。不必遍历整个列即可找到。它将只计算的哈希值,并在1 go内找到它。 缓解。 当您可以使用较短和较快的语法,而不是较长和较