数据湖技术之iceberg(十三)Iceberg与Hudi对比
Iceberg和Hudi都是数据湖技术,从社区活跃度上来看,Iceberg有超越Hudi的趋势。他们有以下共同点:
l 都是构建于存储格式之上的数据组织方式
l 提供ACID能力,提供一定的事务、并行执行能力
l 提供行级别数据修改能力。
l 提供一定的Schema扩展能力,例如:新增、修改、删除列操作。
l 支持数据合并,处理小文件。
l 支持Time travel 查询快照数据。
l 支持批量和实时数据读写
Iceberg与Hudi之间不同点在于以下几点:
l Iceberg支持Parquet、avro、orc数据格式,Hudi支持Parquet和Avro格式。
l 两者数据存储和查询机制不同
l Iceberg只支持一种表存储模式,就是有metadata file、manifest file和data file组成存储结构,查询时首先查找Metadata元数据进而过滤找到对应的 SnapShot对应的manifest files ,再找到对应的数据文件。Hudi支持两种表存储模式:Copy On Write(写时合并) 和Merge On Read(读时合并),查询时直接读取对应的快照数据。
l 对于处理小文件合并时,Iceberg只支持API方式手动处理合并小文件,Hudi对于小文件合并处理可以根据配置自动的执行。
l Spark与Iceberg和Hudi整合时,Iceberg对SparkSQL的支持目前来看更好。Spark与Hudi整合更多的是Spark DataFrame API 操作。
l 关于Schema方面,Iceberg Schema与计算引擎是解耦的,不依赖任何的计算引擎,而Hudi的Schema依赖于计算引擎Schema。