介绍
在我们之前的博客中比较了delta 和 iceberg之后,很多人要求对他们的最新版本进行基准测试,并将 Apache Hudi 加入其中。
因此,根据大众的需求,我们确实做到了,我们使用Apache Spark 3.2.0在Delta 1.2.0、Iceberg 0.13.1和Hudi 0.11.1上执行了 TPC-DS 。
01 什么是TPC-DS
TPC-DS是由事务处理性能委员会 (TPC) 定义的数据仓库基准。TPC 是一个由数据库社区在 1980 年代后期创立的非营利组织,其目标是开发可以通过模拟真实场景来客观地测试数据库系统性能的基准。TPC对数据库行业产生了重大影响。
环境设置
在这个基准测试中,我们使用了带有 COW 表类型的 Hudi 0.11.1、Delta 1.2.0和Iceberg 0.13.1,其环境组件如下表所示:
我们是怎么做的
如前所述,我们使用了Delta oss 的开源 TPC-DS 基准测试,并将其扩展为支持 Iceberg 和 hudi。我们注册了加载性能,这是将 Parquet 格式的数据加载到 Delta/iceberg/hudi 表中所需的时间。然后我们注册查询性能。每个 TPC-DS 查询运行 3 次,并考虑了平均运行时间。
基准测试结果
整体表现
完成基准测试后,加载和查询表的整体性能有利于 Delta,因为它比 Iceberg快1.7 倍,比Hudi快4.3 倍. 它将数据加载到 Delta 并执行 TPC-DS 查询需要1.75 小时,Iceberg 需要2.97 小时, Hudi 需要7.65 小时。[图表一]
加载性能
当从 Parquet 加载数据到我们预期的格式时,Delta比iceberg 快1.17 倍。但是,Delta的整体性能比 Hudi快 9.7 倍。[图表2]
为了进一步分析加载性能结果,我们深入研究了每个表的详细加载结果,并注意到与 Hudi 相比,加载时间的差异随着表的大小变大而变大。例如,在加载客户表时,Delta 和 Iceberg 的性能几乎相同,并且比 Hudi快 2.8 倍。同时,在 TPC-DS 基准测试中最大的表之一 store_sales 表中,Delta比 Iceberg快1.2 倍,比 Hudi 快 11.5 倍。
这也表明,自从上一次基准测试以来,Delta 和 Iceberg 的负载性能差异已经缩小了0.3 倍。[图表3]
查询性能
结论
运行基准测试后,Delta 在加载和查询数据方面的表现优于 Iceberg 和 Hudi。Hudi 的开箱即用负载性能出乎意料地缓慢,并显着影响了其整体基准测试结果。