⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
Iceberg REST 目录

iceberg 扩展支持连接 Iceberg REST 目录。在连接 Iceberg REST 目录之前,您必须按照概述中的说明安装 iceberg 扩展。

如果您要连接由 Amazon 管理的 Iceberg REST 目录,请参阅连接 Amazon S3 表Amazon Sagemaker Lakehouse 的说明。

对于所有其他 Iceberg REST 目录,您可以按照以下说明操作。有关特定目录的问题,请参阅示例部分。

大多数 Iceberg REST 目录通过 OAuth2 进行身份验证。您可以使用现有的 DuckDB 密钥工作流来存储 OAuth2 服务的登录凭据。

CREATE SECRET iceberg_secret (
    TYPE ICEBERG,
    CLIENT_ID 'admin',
    CLIENT_SECRET 'password',
    OAUTH2_SERVER_URI 'http://irc_host_url.com/v1/oauth/tokens'
);

如果您已有 Bearer 令牌,可以直接将其传递给您的 CREATE SECRET 语句

CREATE SECRET iceberg_secret (
    TYPE ICEBERG,
    TOKEN 'bearer_token'
);

您可以使用以下 ATTACH 语句连接 Iceberg 目录。

ATTACH 'warehouse' AS iceberg_catalog (
   TYPE iceberg,
   SECRET iceberg_secret, -- pass a specific secret name to prevent ambiguity
   ENDPOINT https://rest_endpoint.com
);

要查看可用表,请运行

SHOW ALL TABLES;

ATTACH 选项

带有 OAuth2 授权的 REST 目录也可以仅使用 ATTACH 语句进行连接。请参见下方 REST 目录的完整 ATTACH 选项列表。

参数 类型 默认值 描述
ENDPOINT_TYPE VARCHAR NULL 用于连接 S3Tables 或 Glue 目录。允许的值为 'GLUE' 和 'S3_TABLES'
ENDPOINT VARCHAR NULL 用于与 REST 目录通信的 URL 端点。不能与 ENDPOINT_TYPE 结合使用
SECRET VARCHAR NULL 用于与 REST 目录通信的密钥名称
CLIENT_ID VARCHAR NULL 用于密钥的 CLIENT_ID
CLIENT_SECRET VARCHAR NULL 密钥所需的 CLIENT_SECRET
DEFAULT_REGION VARCHAR NULL 与存储层通信时使用的默认区域
OAUTH2_SERVER_URI VARCHAR NULL 获取 Bearer 令牌的 OAuth2 服务器 URL
AUTHORIZATION_TYPE VARCHAR OAUTH2 对于需要 SigV4 授权的目录,请传递 SigV4

以下选项只能传递给 CREATE SECRET 语句,并且它们要求 AUTHORIZATION_TYPEOAUTH2

参数 类型 默认值 描述
OAUTH2_GRANT_TYPE VARCHAR NULL 请求 OAuth 令牌时的授权类型
OAUTH2_SCOPE VARCHAR NULL 返回的 OAuth 访问令牌的请求范围

特定目录示例

R2 目录

要连接到 R2 cloudflare 管理的目录,请按照以下连接步骤操作。

CREATE SECRET r2_secret (
    TYPE ICEBERG,
    TOKEN 'r2_token'
);

您可以按照入门中的创建 API 令牌步骤来创建令牌。

然后,使用以下命令连接目录。

ATTACH 'warehouse' AS my_r2_catalog (
    TYPE ICEBERG,
    ENDPOINT 'catalog-uri'
);

warehousecatalog-uri 变量将在所需 R2 对象存储目录的设置中提供(R2 对象存储 > 目录名称 > 设置)。

Polaris

要连接到 Polaris 目录,以下命令将起作用。

CREATE SECRET polaris_secret (
    TYPE ICEBERG,
    CLIENT_ID 'admin',
    CLIENT_SECRET 'password',
);
ATTACH 'quickstart_catalog' as polaris_catalog (
    TYPE ICEBERG,
    ENDPOINT 'polaris_rest_catalog_endpoint'
);

Lakekeeper

要连接到 Lakekeeper 目录,以下命令将起作用。

CREATE SECRET lakekeeper_secret (
    TYPE ICEBERG,
    CLIENT_ID 'admin',
    CLIENT_SECRET 'password',
    OAUTH2_SCOPE 'scope',
    OAUTH2_SERVER_URI 'lakekeeper_oauth_url'
);
ATTACH 'warehouse' as lakekeeper_catalog (
    TYPE ICEBERG,
    ENDPOINT 'lakekeeper_irc_url',
    SECRET lakekeeper_secret
);

限制

目前尚不支持从由非 S3 或 S3Tables 远程存储支持的 Iceberg REST 目录中读取数据。