引言

自 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 等数据处理引擎集成。

更多推荐