配置目录集成¶
目录集成是一个命名的、账户级别的 Snowflake 对象,用于存储有关您的表元数据在以下场景中如何组织的信息:
当您不使用 Snowflake 作为 Iceberg 目录 时。例如,如果您的表由 AWS Glue 管理,则需要目录集成。
当您想要与 Snowflake Open Catalog 集成时:
在 Snowflake Open Catalog 中使用 Snowflake 查询 Iceberg 表。
将 Snowflake 管理的 Iceberg 表与 Snowflake Open Catalog 集成,以便第三方计算引擎可以查询该表。
单个目录集成可以支持一个或多个使用相同外部目录的 Iceberg 表。
您必须指定一个目录集成,以便在 Snowflake 中为以下场景创建一个 Apache Iceberg™ 表:
使用外部 Iceberg 目录。
从对象存储中的文件创建表。
与 Snowflake Open Catalog 集成。
使用 Iceberg REST 目录。
创建目录集成¶
您可以创建并配置目录集成,以便与一个或多个 Iceberg 表配合使用。
有关具体说明,请参阅以下主题:
在账户、数据库或架构级别设置默认目录¶
要定义用于 Iceberg 表的默认目录,您可以在以下几个级别上设置 CATALOG 参数:
- 账户:
账户管理员可以使用 ALTER ACCOUNT 命令设置账户的参数。如果为账户设置了该值,则在该账户中创建的所有使用外部目录的 Iceberg 表默认使用该目录集成。
- 对象:
用户可以执行适当的 CREATE <object> 或 ALTER * <object>* 命令,以在数据库或架构级别上替换 CATALOG 参数值。系统会使用适用范围级别最低的声明:架构 > 数据库 > 账户。
除使用适当的 ALTER <object_type_> 命令修改对象所需的最小权限之外,角色还必须拥有目录集成的 USAGE 权限。
备注
对 CATALOG 参数的更改仅适用于更改 之后 创建的表。现有表将继续使用创建时指定的目录集成。
示例¶
以下语句为名为 my_database_1
的数据库设置目录集成 (shared_catalog_integration
):
ALTER DATABASE my_database_1
SET CATALOG = 'shared_catalog_integration';
在数据库级别设置目录集成后,可以在该数据库中创建 Iceberg 表,而无需指定目录集成。以下语句利用 my_database_1
的对象存储中的元数据创建 Iceberg 表,该数据库使用为数据库设置的默认目录集成 (shared_catalog_integration
)。
CREATE ICEBERG TABLE my_iceberg_table
EXTERNAL_VOLUME='my_external_volume'
METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';