我们将 Xorbits 与 Dask、Pandas API on Spark、以及 Modin on Ray 基于 TPC-H 基准测试进行性能对比,包含 scale factor 100(大约 100GB 数据集)和 1000(大约 1TB 数据集)两种。 TPC-H SF100 的集群包含1个 r6i.large 实例作为 supervisor,以及5个 r6i.4xlarge 实例作为 worker;TPC-H SF1000 包含1个 r6i.large 实例作为 supervisor,16个 r6i.8xlarge 实例作为 worker。
Dask 是一个知名的"类 pandas"框架,它可以用来分布式加速 Python 计算。下图展现了 Xorbits 和 Dask 的计算时间(不含 I/O 时间)。Dask 在 Q21 跑的时候内存溢出,因此 Q21 被排除。综合所有查询,Xorbits 比 Dask 快7.3倍。
Spark 是知名的大数据框架。下图展现了 Xorbits 和 Pandas API on Spark 的计算时间(不包含 I/O 时间)。Pandas API on Spark 跑 Q1、Q4、Q7 和 Q21 查询时失败,跑 Q20 查询时内存溢出。除此之外,对于所有查询,Xorbits 和它有着相似的性能,但是 Xorbits 提供更优秀的 API 兼容性。
Modin 是另一个"类 pandas"的框架,他们宣称可以"通过更改一行代码"就可以加速 Pandas 计算。下图展现了 Xorbits 和 Modin 的计算时间(不包含 I/O 时间)。 不幸的是,Modin 跑第一个查询就卡住了,所以我们不得不改变运行方式,把 Modin 改成一个个查询单独跑,以期这样能减少内存使用,使得能跑通尽可能多的查询。 最后 Modin 在大多数涉及数据重排的查询中内存溢出,显得性能差别没那么明显,Xorbits 依然比 Modin 快了3.2倍。
Xorbits 能够跑通全部的测试,Dask、Pandas API on Spark 以及 Modin 大部分的测试都跑失败了。因此,我们无法对比性能的差别,我们计划未来在合适的时间继续对比。