数据湖(二十):Flink 兼容 Iceberg 目前不足和 Iceberg 与 Hudi 对比
Flink 兼容 Iceberg 目前不足和 Iceberg 与 Hudi 对比
一、Flink 兼容 Iceberg 目前不足
Iceberg 目前不支持 Flink SQL 查询表的元数据信息,需要使用 Java API 实现。
Flink 不支持创建带有隐藏分区的 Iceberg 表
Flink 不支持带有 WaterMark 的 Iceberg 表
Flink 不支持添加列、删除列、重命名列操作。
Flink 对 Iceberg Connector 支持并不完善。
二、Iceberg 与 Hudi 对比
Iceberg 和 Hudi 都是数据湖技术,从社区活跃度上来看,Iceberg 有超越 Hudi 的趋势。他们有以下共同点:
都是构建于存储格式之上的数据组织方式
提供 ACID 能力,提供一定的事务、并行执行能力
提供行级别数据修改能力。
提供一定的 Schema 扩展能力,例如:新增、修改、删除列操作。
支持数据合并,处理小文件。
支持 Time travel 查询快照数据。
支持批量和实时数据读写
Iceberg 与 Hudi 之间不同点在于以下几点:
Iceberg 支持 Parquet、avro、orc 数据格式,Hudi 支持 Parquet 和 Avro 格式。
两者数据存储和查询机制不同
Iceberg 只支持一种表存储模式,就是有 metadata file、manifest file 和 data file 组成存储结构,查询时首先查找 Metadata 元数据进而过滤找到对应的 SnapShot 对应的 manifest files ,再找到对应的数据文件。Hudi 支持两种表存储模式:Copy On Write(写时合并) 和 Merge On Read(读时合并),查询时直接读取对应的快照数据。
对于处理小文件合并时,Iceberg 只支持 API 方式手动处理合并小文件,Hudi 对于小文件合并处理可以根据配置自动的执行。
Spark 与 Iceberg 和 Hudi 整合时,Iceberg 对 SparkSQL 的支持目前来看更好。Spark 与 Hudi 整合更多的是 Spark DataFrame API 操作。
关于 Schema 方面,Iceberg Schema 与计算引擎是解耦的,不依赖任何的计算引擎,而 Hudi 的 Schema 依赖于计算引擎 Schema。
版权声明: 本文为 InfoQ 作者【Lansonli】的原创文章。
原文链接:【http://xie.infoq.cn/article/674dbd935e899678f833e21f8】。文章转载请联系作者。
评论