在 Snowflake 中将 Apache Iceberg™ 表与 Snowflake Open Catalog 结合使用

在 Snowflake 中将 Apache Iceberg™ 表与 Snowflake Open Catalog 结合使用。

什么是 Snowflake Open Catalog?

Open Catalog 是基于开源 Apache Iceberg REST 协议构建的 Iceberg 目录实现。如需了解详情,请参阅 Snowflake Open Catalog 文档。

Snowflake 支持通过以下选项结合使用 Open Catalog:

注意事项

将 Snowflake 与 Open Catalog 结合使用时,请注意以下事项:

存储

  • 就像 Snowflake 管理的 Iceberg 表 一样,您可以将 Open Catalog 管理的 Iceberg 表存储在外部云存储中。

  • Snowflake 中的 Iceberg 表使用 外部卷 来提供对云存储的访问,而由 Open Catalog 管理的表则使用 存储配置

同步由 Snowflake 管理的 Iceberg 表的配置

表访问权限

  • 您与 Open Catalog 同步的由 Snowflake 管理的 Iceberg 表在 Open Catalog 中为只读。

  • Snowflake 可以查询,但不能写入由 Open Catalog 管理的表。

术语差异

本节汇总了 Snowflake 和 Open Catalog 之间在术语方面的主要差异。

Snowflake 术语

Open Catalog 术语

数据库

Open Catalog 使用 目录,就像 Snowflake 中的数据库。在 Open Catalog 中,您可以创建一个或多个目录资源,以便在命名空间下组织 Iceberg 表。有关更多信息,请参阅 Open Catalog 文档中的 目录

当您将 Snowflake 管理的表与 Open Catalog 同步时,Snowflake 会使用两个父命名空间将表与和表的目录集成关联的目录同步。命名空间对应 Snowflake 中表的数据库和架构。例如,如果您在 Snowflake 中注册了一个 db1.public.table1 Iceberg 表,并且在目录集成中指定了 catalog1 表,该表将同步到 Open Catalog,并使用以下完全限定名称:catalog1.db1.public.table1

架构

在 Open Catalog 中,架构与命名空间的概念是同义的,可以互换使用。

Namespace 显示在 Open Catalog 用户界面中。Open Catalog 使用命名空间来保存对象的集合,术语 _命名空间_ 主要用于 Open Catalog 文档中。有关命名空间的更多信息,请参阅 命名空间

但如果您使用的是第三方查询引擎(如 Apache Spark),并且运行 CREATE SCHEMA 或 CREATE DATABASE 命令,则在 Open Catalog 中创建一个命名空间。您还可以运行 CREATE NAMESPACE 命令来创建命名空间。

命名空间

与 Snowflake 类似,Open Catalog 也使用命名空间,但与 Snowflake 使用命名空间的方式相比,存在一些关键差异。

Open Catalog 中的目录包括您定义的顶级命名空间及其下面的任意多个嵌套命名空间(同样由您定义)。

嵌套命名空间允许您在同一个目录中注册具有相同名称的表。例如,名为 customers 的目录可以包含以下 customerdata 表,这些表分组在顶级命名空间 <region> and a nested namespace <state> 下:

  • customers.northeast.maine.customerdata

  • customers.northeast.vermont.customerdata

此外,在 Open Catalog 中,可以将表分组到命名空间层次结构中的任意命名空间(包括顶级命名空间)下。

有关命名空间的更多信息(包括示例 Open Catalog 结构的概念图),请参阅 Open Catalog 的关键概念

角色

在 Open Catalog 中,主体角色 类似于 Snowflake 中的角色,但存在一些关键差异。不能向主体角色授予权限。相反,您应将权限授予目录角色,然后将其授予主体角色,再将主体角色授予服务主体,从而将权限授予服务主体。此外,不能将主体角色分配给其他主体角色。您只能向一个服务主体授予一个主体角色。

您可使用主体角色,以逻辑方式将服务主体分组在一起。主体角色的范围为所有目录。此外,没有不同类型的主体角色。有关详细信息,请参阅 Open Catalog 文档中的 主体角色

数据库角色

Open Catalog 使用 目录角色,类似于 Snowflake 中的数据库角色。目录角色为目录或目录中的对象上的操作指定了一组权限。目录角色的范围为它创建时所在的目录。

在 Open Catalog 中,可以向目录角色授予权限。随后可将目录角色授予主体角色,再将主体角色授予服务主体,这将授予对资源的访问权限。您可以将多个目录角色授予一个主体角色,但只能将一个主体角色授予一个服务主体。有关更多信息,请参阅 Open Catalog 文档中的 目录角色

用户

在 Open Catalog 中,访问控制的上下文中没有用户的概念。

在 Open Catalog 中,权限授予 服务主体,而非用户。查询引擎使用服务主体连接到目录。有关详细信息,请参阅 Open Catalog 文档中的 服务主体

语言: 中文