数据帧比较:Polars vs. Spark vs. Pandas vs. DataFusion性能对比

22-12-19 banq

在 Spark 真正成为主流之前,数据科学家仍在大量使用 Pandas。现在每个人都想要一块 DataFrame 蛋糕!

GitHub 上提供测试代码。
我不会深入探讨这些工具中的每一个,除了一些Rust基础的新工具,例如 Polars 和 DataFusion,您可能对它们中的大多数都很熟悉。此外,将 Spark 混入其中可能不公平,它是一个分布式计算平台等等。但是,我必须这样做。我发现比较各种工具很有趣。
观察代码在每种情况下是如何编写测试的很有趣,它告诉您有关该工具的一些信息。观看性能当然也很有趣,尽管它似乎让每个工具的粉丝在互联网上疯狂,这是乐趣的一半。我不会调整任何工具,只是安装并使用它们。

  • 读取简单的平面文件并进行正常聚合有多容易和相似?
  • 开箱即用的性能是什么样的?

我们将使用来自 Divvy Bike trips 开源数据集的 1 年数据

Polars – Rust 和 Python 中速度极快的 DataFrame
这个街区的新人是 Polars,您刚刚开始看到到处都有帖子。这几天Dataframe空间越来越拥挤,很难把所有的选项都说清楚,当然,每个人都说他们是最快的,这是另一个时间的讨论。无论如何,让我们使用 Polars 的 Python 版本,这样我们就可以pip安装并继续。
让我们通过简单地尝试读取我们的.csv文件并将我们的date字符串转换为date数据类型来开始我们的 Polars 之旅。

2.127699500 万条以上的记录只需几秒钟,并groupBy进行一些轻微的日期转换。

Spark——统领一切的一枚戒指
你知道,Spark 不是为了处理像这样的小数据集而设计的。但是,它易于安装,几乎每个人都可以在任何地方使用,因此必须与团队的其他成员一起对其进行测试。Spark 很棒,因为您可以轻松处理比内存大得多的数据,而无需任何lazy()或collect()有趣的东西.
PySpark 的出现实际上让任何人都可以使用代码,更不用说技术人员了。Spark 会更慢,但可能更容易编写。

这里没有惊喜。Spark 是为大型数据集而设计的,速度慢了20.201003几秒钟,但比 Polars 更容易编写代码。

Pandas 
Python 无处不在,而 Pandas 是当天第一个参加 Dataframe 聚会的人,现在它无处不在。它仍然很烦人。
Pandas 最烦人的事情之一就是你如何读取多个文件,至少我是这样的。你会认为现在有人已经解决了这个问题。

与 Spark 一样快,足够简单,并且在17.234139秒内

DataFusion——角落里的家伙
它是一个不错的 Rust DataFrame 小工具。它似乎不是那么出名,它有一个 Python 包,但似乎有点古怪,而且没有任何文档。我们将坚持使用 Rust。

花费100.20秒,太慢了。

详细点击标题