Apache Iceberg™ Tables
TiDB Cloud Lake 可以连接到 Apache Iceberg™ catalog,这样你无需将数据加载到 Fuse 表中即可查询 Iceberg 表。当所连接的 catalog 支持写操作时,你还可以创建并写入 Iceberg 表。
何时使用 Iceberg
在以下情况下使用 Iceberg:
- 你的数据已经由 Iceberg catalog 管理。
- 多个查询引擎需要共享相同的表元信息和对象存储。
- 你需要 Iceberg 提供的能力,例如 schema evolution 和快照。
- 你希望从 TiDB Cloud Lake 查询或写入 Iceberg 表。
创建 Iceberg Catalog
在访问 Iceberg 数据库和表之前,请先创建 catalog。
语法
CREATE CATALOG <catalog_name>
TYPE = ICEBERG
CONNECTION = (
TYPE = '<catalog_type>'
[ ADDRESS = '<catalog_address>' ]
[ WAREHOUSE = '<warehouse_location>' ]
[ "<connection_parameter>" = '<connection_parameter_value>' ]
...
);
参数
以下连接参数可用于兼容 S3 的存储:
支持的 Catalog 类型
TiDB Cloud Lake 支持以下 Iceberg catalog 类型:
Storage catalog 支持以下 AWS 客户端属性:
管理和查询 Iceberg Catalog
使用以下语句查看和选择 catalog:
SHOW CREATE CATALOG <catalog_name>;
SHOW CATALOGS [ LIKE '<pattern>' | WHERE <expression> ];
USE CATALOG <catalog_name>;
更多信息,请参见 SHOW CREATE CATALOG 和 SHOW CATALOGS。
选择 catalog 后,使用标准 SQL 查询其中的表:
SELECT <select_list>
FROM [ <catalog_name>. ]<database_name>.<table_name>
[ WHERE <condition> ];
数据类型映射
下表展示了从 Iceberg 类型到 TiDB Cloud Lake 类型的支持映射。此处未列出的 Iceberg 类型不受支持。
刷新缓存的元信息
TiDB Cloud Lake 在首次查询后会缓存 Iceberg catalog 的元信息。默认情况下,元信息缓存有效期为 10 分钟,并会异步刷新。
当你需要立即刷新缓存的元信息时,请使用以下语句:
USE CATALOG <catalog_name>;
ALTER DATABASE <database_name> REFRESH CACHE;
ALTER TABLE <database_name>.<table_name> REFRESH CACHE;
TiDB Cloud Lake 还支持缓存从 Iceberg catalog 读取的表数据。
写入 Iceberg 表
你可以在支持写操作的 catalog 中创建并写入 Iceberg 表。
创建表
CREATE TABLE [ <database_name>. ]<table_name> (
<column_name> <data_type> [ , ... ]
)
ENGINE = ICEBERG
[ PARTITION BY ( <column_name> [ , ... ] ) ];
写入 Iceberg 表时支持以下 TiDB Cloud Lake 数据类型:
插入数据
使用 INSERT INTO 将行写入 Iceberg 表:
INSERT INTO [ <database_name>. ]<table_name>
[ ( <column_name> [ , ... ] ) ]
VALUES ( <value> [ , ... ] ) [ , ... ];
分区和非分区 Iceberg 表都支持单行和多行插入。对于分区表,TiDB Cloud Lake 会将行路由到相应的分区。
Iceberg 表函数
使用以下表函数检查 Iceberg 元信息: