面向Iceberg REST Catalog的配置方法
Apache Iceberg 是一种面向数据湖的表格式,同时提供了与之配套的 Catalog 接口。Iceberg 定义了数据湖表的存储结构和管理机制,用于支持大规模、复杂数据操作。它为分区、数据更新、时间旅行、快照等提供了优化方案。Iceberg 的 Catalog 负责管理多个表的元数据,提供表发现和管理操作的入口。不同的 Catalog 实现 (如 Hive Metastore、REST、Glue 等) 可以用来存储和检索表的元数据,支持跨环境及引擎一致管理表。
ProtonBase 可以通过外部表方式与 Iceberg REST Catalog 元数据对接,实现查询加速和数据导入和导出。
安装扩展
安装extension,仅需要安装一次,如果已经安装过,可以忽略。
CREATE EXTENSION iceberg_fdw;
创建Iceberg REST Catalog外部服务器
CREATE SERVER <server_name> FOREIGN DATA WRAPPER iceberg_fdw
OPTIONS (
endpoint '<endpoint_url>',
catalog '<catalog_name>'
);
endpoint
, Iceberg Catalog 对外服务的 APIcatalog
, 数据表格文件的根目录
-- 示例
CREATE SERVER iceberg_server FOREIGN DATA WRAPPER iceberg_fdw
OPTIONS (
endpoint 'http://localhost:8181/api/catalog',
catalog 'manual_spark'
);
创建用户映射
为本地用户账号授予对应的对象存储的访问权限。
CREATE USER MAPPING FOR public SERVER iceberg_server
OPTIONS (
token 'principal:root;realm:default-realm'
);
创建外表
- 将iceberg_namespace下的t1表创建为外表,元数据保存在public schema下。
IMPORT FOREIGN SCHEMA iceberg_namespace
LIMIT TO (t1) FROM SERVER iceberg_server INTO public;
- 查询 Iceberg 表
SELECT COUNT(1) FROM t1;
- 写入到 Iceberg 表
INSERT INTO t1 SELECT ...;