【Iceberg学习一】什么是Iceberg?

Apache Iceberg 是一个面向大型分析数据集的开放表格格式。Iceberg 为包括 Spark、Trino、PrestoDB、Flink、Hive 和 Impala 在内的计算引擎增加了表格功能,使用一种高性能的表格格式,其工作方式就像一个 SQL 表一样。

用户体验

Iceberg 避免了不愉快的意外。模式演化功能正常运作,并不会无意中恢复已删除的数据。用户无需了解分区信息也能获得快速查询。

  1. 模式演化 支持添加、删除、更新或重命名操作,且无任何副作用。
  2. 隐藏分区 可以防止用户错误,避免产生无提示的错误结果或极其缓慢的查询。
  3. 分区布局演化 能够根据数据量或查询模式的变化更新表的布局。
  4. 时间旅行功能 允许进行可复现的查询,使用的是完全相同的表快照,或者让用户轻松检查变化。
  5. 版本回滚允许用户通过将表格重置为良好状态来快速纠正问题。

可靠性和性能

Iceberg 为庞大的表格而构建。在生产环境中,Iceberg 被用于管理单个表格可包含数十PB(千兆字节)的数据,即使是这样巨大的表格也能在没有分布式SQL引擎的情况下读取。

  1. 扫描规划速度快 —— 读取表格或查找文件不需要分布式SQL引擎。
  2. 高级过滤 —— 使用表元数据,通过分区和列级统计信息来剪枝数据文件。

Iceberg 旨在解决最终一致性云对象存储中的正确性问题。

  1. 适用于任何云存储,在HDFS中通过避免listing和重命名操作, 减少NN(名称节点)拥塞。
  2. 可序列化隔离 —— 表格变更是原子性的,读取者永远不会看到部分或未提交的变更。
  3. 多个并发写入者使用乐观并发控制,并会重试以确保当写入操作冲突时兼容的更新能够成功。

开放标准

Iceberg 被设计和开发成一个开放的社区标准,拥有一个规范以确保跨语言和实现的兼容性。

Apache Iceberg 是开源的,在 Apache 软件基金会进行开发。

你可能感兴趣的:(Iceberg,学习)