关于为什么Apache-Spark:为什么Apache-Spark-Python在本地比pandas慢?

Why is Apache-Spark - Python so slow locally as compared to pandas?

Spark新手。
我最近开始使用以下命令在两个内核的本地计算机上使用Spark:

1
pyspark --master local[2]

我有一个393Mb的文本文件,其中包含近一百万行。我想执行一些数据操作操作。我正在使用PySpark的内置数据框函数执行简单的操作,例如groupBysummaxstddev

但是,当我在完全相同的数据集上对pandas执行完全相同的操作时,在延迟方面,pandas似乎大大击败了pyspark。

我想知道这可能是什么原因。我有几点想法。

  • 内置函数是否会使序列化/反序列化过程效率低下?如果是,那么还有哪些替代方案?
  • 数据集是否太小以至于不能超过运行spark的基础JVM的开销成本?
  • 感谢您的光临。非常感谢。


    原因:

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

    您可以这样长时间进行下去...