【Iceberg学习一】什么是Iceberg?
Apache Iceberg 是一个面向大型分析数据集的开放表格格式。Iceberg 为包括 Spark、Trino、PrestoDB、Flink、Hive 和 Impala 在内的计算引擎增加了表格功能,使用一种高性能的表格格式,其工作方式就像一个 SQL 表一样。
用户体验
Iceberg 避免了不愉快的意外。模式演化功能正常运作,并不会无意中恢复已删除的数据。用户无需了解分区信息也能获得快速查询。
- 模式演化 支持添加、删除、更新或重命名操作,且无任何副作用。
- 隐藏分区 可以防止用户错误,避免产生无提示的错误结果或极其缓慢的查询。
- 分区布局演化 能够根据数据量或查询模式的变化更新表的布局。
- 时间旅行功能 允许进行可复现的查询,使用的是完全相同的表快照,或者让用户轻松检查变化。
- 版本回滚允许用户通过将表格重置为良好状态来快速纠正问题。
可靠性和性能
Iceberg 为庞大的表格而构建。在生产环境中,Iceberg 被用于管理单个表格可包含数十PB(千兆字节)的数据,即使是这样巨大的表格也能在没有分布式SQL引擎的情况下读取。
- 扫描规划速度快 —— 读取表格或查找文件不需要分布式SQL引擎。
- 高级过滤 —— 使用表元数据,通过分区和列级统计信息来剪枝数据文件。
Iceberg 旨在解决最终一致性云对象存储中的正确性问题。
- 适用于任何云存储,在HDFS中通过避免listing和重命名操作, 减少NN(名称节点)拥塞。
- 可序列化隔离 —— 表格变更是原子性的,读取者永远不会看到部分或未提交的变更。
- 多个并发写入者使用乐观并发控制,并会重试以确保当写入操作冲突时兼容的更新能够成功。
开放标准
Iceberg 被设计和开发成一个开放的社区标准,拥有一个规范以确保跨语言和实现的兼容性。
Apache Iceberg 是开源的,在 Apache 软件基金会进行开发。