一、Iceberg核心概念
大家好,我是顺亿。今天我们来聊聊Iceberg,一个基于Hadoop HDFS和Apache Spark的分布式列式存储库。它的核心概念有哪些呢?让我来给你一一解释。
表(Table)
表是存储数据的逻辑单元,由多个Tablet组成。
Tablet(分片)
Tablet是Table的逻辑单元,每个Tablet存储一个数据分片。
Snapshot(快照)
快照代表Table在某个时间点的数据状态,由一份或多份Tablet组成。
Manifest(清单)
清单描述Table的状态,包括Schema、Partition Spec和Current Snapshot ID等信息。
Partition(分区)
分区是将数据按照指定规则分隔成的逻辑单元。
Block(块)
块是存储Partition数据的单元,每个块都有一个唯一的ID。
二、Iceberg表结构
Iceberg基于snapshot来做多版本控制,每个snapshot对应一组manifest,每个manifest再对应具体的数据文件。
三、数据文件
数据文件是实际存储表格数据的文件,通常以Parquet格式存储。数据文件是不可变的,一旦创建就不能被修改。
四、表快照Snapshot
快照代表Table在某个特定时间点的数据状态,每个表快照包含了表格的元数据信息。
五、清单列表Manifest list
清单列表是Iceberg表格中所有数据文件的列表,包含了数据文件的元数据信息。
六、表快照、数据文件和清单列表之间的关系
表快照、数据文件和清单列表是密切相关的,它们共同组成了Iceberg表格的基本结构。
七、Catalog
Catalog是管理表和数据的入口,负责存储表的元数据信息。
八、Hive Catalog
Hive Catalog是在Iceberg中使用Hive元数据存储的一种Catalog实现。
九、Hadoop Catalog
Hadoop Catalog是在Iceberg中使用Hadoop元数据存储的一种Catalog实现。
十、Hive Catalog和Hadoop Catalog之间的关系
Hive Catalog和Hadoop Catalog的本质区别是它们管理和存储表格数据的方式和元数据信息的组织形式。
十一、创建数据库和iceberg表
创建Hive Catalog数据库和Iceberg表的具体命令如下:
hive> CREATE DATABASE my_db
WITH DBPROPERTIES (
'iceberg.catalog'='hadoop.catalog',
'iceberg.catalog.hive_db'='my_db'
);
CREATE TABLE my_db.my_table (
id INT,
name STRING
)
PARTITIONED BY (id);
十二、插入数据
INSERT INTO my_table
VALUES (1, 'John'),
(2, 'Mary'),
(3, 'Peter');
十三、查询表的信息
describe formatted iceberg_test1;
以上就是Iceberg的核心概念和操作,希望对大家有所帮助。我是顺亿,关注趣航编程网(www.vqhf.com)了解更多编程知识。
