赞
踩
本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见大数据技术体系
Apache Iceberg 是一种用于庞大分析数据集的开放表格式。
表格式(Table Format)的功能是确定该如何管理、组织和跟踪构成表的所有文件。可以将其视为物理数据文件(用 Parquet 或 ORC 等编写)以及它们如何结构形成表之间的抽象层。
Iceberg 使用类似于 SQL 表的高性能表格式为计算引擎添加了表,包括 Spark、Trino、PrestoDB、Flink、Hive 和 Impala。
使用快照模式意味着 Iceberg 可以保证读写的隔离性。
读者将始终看到数据的一致版本(即没有“脏读”),而无需锁表。
写入器单独工作,不影响实时表,并且仅在写入完成时执行元数据交换,在一个原子提交中进行更改。
使用快照还可以启用时间旅行操作,因为用户可以通过指定要使用的快照对表的不同版本执行各种操作。
使用 Iceberg 也有巨大的性能优势。
在作业规划期间,Iceberg 并没有采用 O(n) 的时间复杂度来列出表中的分区,而是执行时间复杂度是 O(1) 的 RPC 来读取快照。
文件修剪和谓词下推也可以分发到作业中,因此 Hive 元存储不再是一个瓶颈。
这也消除了使用细粒度分区的障碍。
由于每个数据文件存储的统计数据,可用的文件修剪也大大加快了查询规划。
Iceberg 是因庞大数据表而诞生的。
生产环境中 Iceberg 单表可以包含几十 PB 的数据,即使在没有分布式 SQL 引擎的情况下这些大表也可以读取。
Iceberg 旨在解决最终一致的云对象存储中的正确性问题。
Iceberg 项目最初是在 Netflix 开发的,旨在解决他们使用庞大的 PB 规模表的长期问题。
它于 2018 年作为 Apache 孵化器项目开源,并于 2020 年 5 月 19 日从孵化器毕业
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。