Iceberg系列:Iceberg作为数据湖基建的5大特性
引言
自 21 世纪以来,大数据已发生了重大变化。许多企业迅速适应了这一趋势,并使用 Apache Hadoop 等开源工具构建了大数据平台。
后来,这些公司开始面临管理快速发展的数据处理需求的困难。他们在处理架构级别更改、分区方案演变以及回溯查看数据方面面临挑战。
像 Netflix 这样的重度数据驱动型公司也面临着类似的挑战。他们发明了一种名为“Iceberg”的表格格式,它基于现有数据文件之上,通过利用其架构提供关键功能。
随着数据社区的迅速关注,成为Apache 的顶级项目。在本文中,我将通过示例和图表探讨Apache Iceberg 的五大关键功能。
时间旅行

此功能允许查询任何时间点的数据。这个功能为数据和业务分析师提供新的可能性,帮助他们了解趋势以及数据随时间的变化情况。如果出现任何错误,工程师可以轻松回滚到以前的状态。此功能还允许分析特定时间点的数据,从而方便进行审计检查。
模式演变
Apache Iceberg 的架构演变功能可以轻松更改架构,而且无需付出任何底层改造或进行迁移。随着业务需求的发展,我们可以:
- 添加和删除列无需任何停机或表重写;
- 更新列(加宽)
- 更改列的顺序
- 重命名现有列
这些更改在元数据级别处理,而无需重写底层数据。
分区演变
使用 Apache Iceberg 表格式可以更改表分区策略,无需重写基础表或将数据迁移到新表。
这是因为查询不会像在Apache Hadoop中那样直接引用分区值。
Iceberg 分别保存每个分区版本的元数据信息。这使得在查询数据时获取拆分变得容易。
例如,根据日期范围查询表,而表使用月份作为分区列(之前)作为一个拆分,使用日期作为新分区列(之后)作为另一个拆分。这称为拆分规划。
ACID事务
Iceberg 在原子性、一致性、隔离性和持久性(ACID)方面为事务提供了强大的支持。
它允许多个并发写入操作,这将在数据密集型作业中实现高吞吐量,而不会损害数据一致性。
Iceberg 中的所有操作都是事务性的,即使数据同时出现故障或发生修改,数据仍然保持一致。
Iceberg 支持不同的隔离级别,能够让工程师根据需求平衡性能和一致性。
以下是 Iceberg 如何处理行级更新和删除的摘要:
Iceberg 支持高级表操作
- 创建/管理表快照:这提供了强大的版本控制能力;
- 通过高度优化的元数据快速规划和执行查询;
- 内置表维护工具,如压缩和无效文件清理 。
总结
Iceberg 旨在与所有主流云存储配合使用,此外,Iceberg 还可以轻松与 Spark、Presto、Trino 和 Hive 等数据处理引擎集成。
更多推荐
所有评论(0)