Apache Iceberg™ 表的存储¶
Snowflake 表通常使用 Snowflake 管理的存储。相比之下,Snowflake 中的 Apache Iceberg™ 表使用由您配置和维护的外部存储。
本主题提供 Iceberg 表存储的概念信息和最佳实践。
外部卷¶
备注
To connect Snowflake to your external cloud storage for Iceberg tables without using an external volume, use catalog-vended credentials. This option is only available for externally managed Iceberg tables. For more information, see 为 Apache Iceberg™ 表使用由目录分发的凭据.
外部卷是一个命名的账户级 Snowflake 对象,用于将 Snowflake 连接到 Iceberg 表的外部云存储。外部卷存储您的存储位置的身份和访问管理 (IAM) 实体。Snowflake 使用 IAM 实体安全地连接到存储,以访问表数据、Iceberg 元数据以及存储表架构、分区和其他元数据的清单文件。
单个外部卷可以支持一个或多个 Iceberg 表。
每个外部卷都与特定 活动存储位置 相关联,单个外部卷可以支持多个 Iceberg 表。但是,所需的外部卷数量取决于您要如何存储、组织和保护表数据。
如果您想将 Snowflake-Iceberg 表的 所有 数据和元数据放在同一存储位置下的子目录中(例如,在同一 S3 桶中),则可以使用单个外部卷。要为 Snowflake 管理的表配置这些目录,请参阅 数据和元数据目录。
或者,您可以创建多个外部卷以不同的方式保护不同的存储位置。例如,您可以创建以下外部卷:
外部管理的 Iceberg 表的只读外部卷。
配置为具有 Snowflake 管理的表具有读写权限的外部卷。
授予 Snowflake 对存储的访问权限¶
云提供商存储¶
要授予 Snowflake 对 Iceberg 表云存储位置的访问权限,请使用云提供商的 Identity and Access Management 服务。您授予身份或主体对您存储的有限访问权限,而无需交换密钥。这与 Snowflake 用于其他集成(包括存储集成)的访问模式相同。
创建 外部卷 时,Snowflake 会为您的整个 Snowflake 账户提供主体。主体如下所示,具体取决于您的云提供商:
云提供商 |
Snowflake 提供的主体 |
|---|---|
Amazon Web Services (AWS) |
IAM 用户 (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-users) |
Google Cloud |
服务账户 (https://cloud.google.com/iam/docs/overview#service_account) |
Azure |
服务主体 (https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser#service-principal-object) |
Snowflake 直接与您的存储提供商进行身份验证,Snowflake 提供的主体将承担您指定的角色。该角色必须拥有在存储位置上执行操作的权限。例如,只有当角色拥有从存储位置读取的权限时,Snowflake 才能从该存储位置读取数据。
Snowflake 需要权限才能对 Iceberg 表执行以下操作:
Snowflake 管理的表 |
使用外部 Iceberg 目录的表 |
|
|---|---|---|
Amazon S3 |
|
|
Google Cloud Storage |
|
|
Azure Storage |
存储 Blob 数据贡献者角色 (https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/storage#storage-blob-data-contributor) 的所有允许操作 |
存储 Blob 数据阅读者角色 (https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/storage#storage-blob-data-reader) 的所有允许操作 |
备注
s3:PutObject 权限授予对外部卷位置的写入访问权限。要完全配置写入访问权限,您必须将外部卷的 ALLOW_WRITES 参数设置为 :code:`TRUE`(默认值)。
有关授予 Snowflake 对 Iceberg 表存储的访问权限的完整说明,请参阅以下主题:
兼容 S3 的存储¶
要授予 Snowflake 对 Iceberg 表的 兼容 S3 的存储位置 的访问权限,您需要在创建外部卷时指定一个 兼容 S3 的存储端点 并提供凭据。
有关说明,请参阅 为 S3 兼容存储配置外部卷。
活动存储位置¶
每个外部卷都支持一个活动存储位置。如果在 CREATE EXTERNAL VOLUME 语句中指定了多个存储位置,Snowflake 将指定一个位置作为活动位置。在外部卷的生命周期内,活动位置将保持不变。
首次在 CREATE ICEBERG TABLE 语句中使用外部卷时,系统就会进行分配。Snowflake 使用以下逻辑选择活动位置:
如果
STORAGE_LOCATIONS列表包含一个或多个 本地 存储位置,Snowflake 将使用列表中的第一个本地存储位置。本地存储位置与您的 Snowflake 账户位于同一云提供商和同一区域。如果
STORAGE_LOCATIONS列表不包含任何本地存储位置,Snowflake 将选择列表中的第一个位置。
备注
在 Snowflake 版本 7.44 之前创建的外部卷可能使用不同的逻辑来选择活动位置。
验证存储访问¶
备注
To verify storage access by using Snowsight, see Verify an external volume by using Snowsight
要检查 Snowflake 是否能成功对您的存储提供商进行身份验证,请调用 SYSTEM$VERIFY_EXTERNAL_VOLUME 函数。
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_external_volume');
备注
如果您收到以下错误,您的账户管理员必须在 Snowflake 部署区域中激活 AWS STS。有关说明,请参阅 AWS 文档中的 在 AWS 区域中管理 AWS STS (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)。
Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.
对于 Snowflake 管理的表,Snowflake 会在以下情况下自动验证对外部卷上 活动存储位置 的访问权限:
首次在 Snowflake 管理的表的 CREATE ICEBERG TABLE 语句中指定该外部卷。
首次将表转换为使用 Snowflake 作为 Iceberg 目录。
外部卷的 ALLOW_WRITES 属性必须设置为 TRUE。
Snowflake 会尝试以下存储操作来验证存储位置。
编写测试文件。
读取文件。
列出文件路径的内容。
删除文件。
如果任何一项操作失败,则 CREATE ICEBERG TABLE(或 ALTER ICEBERG TABLE … CONVERT TO MANAGED)语句会失败并收到错误消息。
文件管理¶
本部分将根据 Iceberg 表的类型说明如何管理存储中的 Iceberg 表文件。
Snowflake 管理的表¶
重要
不允许其他工具访问删除或覆盖与 Snowflake 管理的 Iceberg 表相关联的对象。
确保 Snowflake 主体能访问表存储。有关更多信息,请参阅 授予 Snowflake 对存储的访问权限。
虽然 您 可以配置和管理 Iceberg 表的存储位置,但 Snowflake 只对存储中属于 Snowflake 管理的表的对象(数据和元数据文件)进行操作。Snowflake 会定期对这些表对象进行维护,以优化查询性能并清理已删除的数据。
如果其他工具删除或覆盖 Snowflake 管理的表对象,查询可能会失败。同样,如果您撤销 Snowflake 主体对存储的访问权限,对表的查询和 Snowflake 的表维护操作也会失败。
当 Snowflake 删除 Snowflake 管理的表数据或删除表时,Snowflake 会在表保留期到期后删除对象。
To configure replication for Snowflake-managed Iceberg tables, see Configure replication for Snowflake-managed Iceberg tables.
数据和元数据目录¶
This section describes the data and metadata directories for Snowflake-managed tables.
These directories can either be organized in a flat or hierarchical layout:
备注
要查找任何 Iceberg 表的数据和元数据目录,可以使用 SHOW ICEBERG TABLES 命令。命令输出包含一个 base_location 属性,该属性指示每个表的数据和元数据文件的位置。
Flat layout¶
This section describes the flat layout in Snowflake for data and metadata directories for Snowflake-managed tables.
When you create a Snowflake-managed table that uses the default flat directory layout (PATH_LAYOUT = FLAT), Snowflake writes all Parquet
data files under a single data/ directory and all table metadata data files under a single metadata/ directory. Snowflake also writes
metadata for 基于 Delta 的表.
Snowflake 使用以下模式构建路径,具体取决于为 BASE_LOCATION 或 BASE_LOCATION_PREFIX 参数指定的值。如果您指定了 BASE_LOCATION,Snowflake 不会使用路径中的 BASE_LOCATION_PREFIX。
其中:
STORAGE_BASE_URL是与外部卷关联的活动存储位置的基本 URL。相对于外部卷位置,
BASE_LOCATION是一个目录路径,Snowflake 会在此路径下写入表文件(在 CREATE ICEBERG TABLE 中指定)。基于 Delta 的表需要指定 BASE_LOCATION。randomId是一个随机的、由 Snowflake 生成的 8 个字符的字符串。
BASE_LOCATION 已定义 |
BASE_LOCATION_PREFIX 已定义 |
路径 |
|---|---|---|
否 |
否 |
|
否 |
是 |
|
是 |
不适用(已忽略) |
|
''(空字符串) |
不适用(已忽略) |
|
** 使用 BASE_LOCATION 整理表存储**
备注
如果您打算将来重命名表,则不建议使用此选项。
创建 Snowflake 管理的表后,即使您重命名表,其在外部存储中文件的路径也 不会 更改。
要在同一 STORAGE_BASE_URL 下为多个 Iceberg 表整理存储中的文件,可考虑在 CREATE ICEBERG TABLE 语句中使用表名作为 BASE_LOCATION。这样,Snowflake 就会将数据和元数据写入包含表名的目录中。
例如:
CREATE OR REPLACE ICEBERG TABLE iceberg_table_1 (
col_1 int,
col_2 string
)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'iceberg_external_volume'
BASE_LOCATION = 'iceberg_table_1';
CREATE OR REPLACE ICEBERG TABLE iceberg_table_2 (
col_1 int,
col_2 string
)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'iceberg_external_volume'
BASE_LOCATION = 'iceberg_table_2';
该语句会在外部云存储中产生以下目录结构:
STORAGE_BASE_URL
|-- iceberg_table_1.<randomId>
| |-- data/
| |-- metadata/
|-- iceberg_table_2.<randomId>
| |-- data/
| |-- metadata/
Hierarchical layout¶
This section describes the hierarchical layout in Snowflake for data and metadata directories for Snowflake-managed tables.
When you create a Snowflake-managed table that uses the default flat directory layout (PATH_LAYOUT = HIERARCHICAL), Snowflake writes all
Parquet data files by organizing them in a hierarchical directory structure under the data/ directory that is based on transforms that
you define when you create a
table. For instructions on how to enable this layout, see Partitioning with hierarchical paths. Snowflake writes all
table metadata data files under a single metadata/ directory.
Snowflake 使用以下模式构建路径,具体取决于为 BASE_LOCATION 或 BASE_LOCATION_PREFIX 参数指定的值。如果您指定了 BASE_LOCATION,Snowflake 不会使用路径中的 BASE_LOCATION_PREFIX。
其中:
STORAGE_BASE_URL是与外部卷关联的活动存储位置的基本 URL。相对于外部卷位置,
BASE_LOCATION是一个目录路径,Snowflake 会在此路径下写入表文件(在 CREATE ICEBERG TABLE 中指定)。基于 Delta 的表需要指定 BASE_LOCATION。randomId是一个随机的、由 Snowflake 生成的 8 个字符的字符串。
BASE_LOCATION 已定义 |
BASE_LOCATION_PREFIX 已定义 |
路径 |
|---|---|---|
否 |
否 |
|
否 |
是 |
|
是 |
不适用(已忽略) |
|
''(空字符串) |
不适用(已忽略) |
|
** 使用 BASE_LOCATION 整理表存储**
备注
如果您打算将来重命名表,则不建议使用此选项。
创建 Snowflake 管理的表后,即使您重命名表,其在外部存储中文件的路径也 不会 更改。
要在同一 STORAGE_BASE_URL 下为多个 Iceberg 表整理存储中的文件,可考虑在 CREATE ICEBERG TABLE 语句中使用表名作为 BASE_LOCATION。这样,Snowflake 就会将数据和元数据写入包含表名的目录中。
The following example creates customer_region_summary and orders_by_status tables, which each use a hierarchical path layout
for their data files based on the following transforms:
The
customer_region_summarytable is partitioned byregionthe
orders_by_statustable is partitioned byorder_status
CREATE OR REPLACE ICEBERG TABLE customer_region_summary (
customer_id int,
region string
)
PARTITION BY (region)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'iceberg_external_volume'
PATH_LAYOUT = HIERARCHICAL
BASE_LOCATION = 'customer_region_summary';
CREATE OR REPLACE ICEBERG TABLE orders_by_status (
order_id int,
order_status string
)
PARTITION BY (order_status)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'iceberg_external_volume'
PATH_LAYOUT = HIERARCHICAL
BASE_LOCATION = 'orders_by_status';
该语句会在外部云存储中产生以下目录结构:
STORAGE_BASE_URL
|-- customer_region_summary.<randomId>
| |-- data/
| | |-- REGION=US/
| | | |-- part-00001-abc123.parquet
| | |-- REGION=EU/
| | |-- part-00002-def456.parquet
| |-- metadata/
|
|-- orders_by_status.<randomId>
|-- data/
| |-- ORDER_STATUS=SHIPPED/
| | |-- part-00001-ghi789.parquet
| |-- ORDER_STATUS=PENDING/
| |-- part-00002-jkl012.parquet
|-- metadata/
使用外部目录的表¶
对于外部管理的 Iceberg 表或 ALLOW_WRITES 属性设置为 FALSE 的外部卷,Snowflake 不会写入或删除存储对象。
For external catalogs that you connect to with an external volume, to access your table data and metadata, Snowflake assumes the access control role that you configure for your external volume. You grant the role permission to access a storage location (in a bucket or container). All of your table data and metadata files must be in that location. For example, if your storage location is an S3 bucket, all of your data and metadata files must exist somewhere in that bucket.
For external catalogs that you connect to by using catalog-vended credentials, Snowflake obtains short-lived, scoped credentials from the external catalog that allow Snowflake access only to the paths that store the table's data and metadata. For more information, see 为 Apache Iceberg™ 表使用由目录分发的凭据.
此外,转换表 不会重写任何数据或元数据文件。只有在您将表转换为使用 Snowflake 作为目录后,Snowflake 才会写入 Iceberg 表。
数据和元数据目录¶
This section describes the data and metadata directories for externally managed tables that you create in a catalog-linked database. These directories can either be organized in a flat or hierarchical layout:
备注
To find the data and metadata directories for any Iceberg table that you specified a
base_locationfor when you created it, you can use the SHOW ICEBERG TABLES command. The command output includes abase_locationproperty that indicates the location of each table's data and metadata files.For externally managed tables in a standard Snowflake database, Snowflake infers the location of the table from the remote catalog metadata and then writes to the
/datadirectory for the table.
Catalog-linked database: Flat layout¶
This section describes the flat layout for data and metadata directories for externally managed Iceberg tables that you create in a catalog-linked database.
When you create an externally managed table in a catalog-linked database that uses the default flat directory layout (PATH_LAYOUT = FLAT),
Snowflake writes all Parquet data files under a single data/ directory and all table metadata data files under a
single metadata/ directory.
Snowflake 使用以下模式构建路径,具体取决于为 BASE_LOCATION 或 BASE_LOCATION_PREFIX 参数指定的值。如果您指定了 BASE_LOCATION,Snowflake 不会使用路径中的 BASE_LOCATION_PREFIX。
备注
The BASE_LOCATION_PREFIX parameter is only supported when you use an external volume to connect to your catalog-linked database.
The BASE_LOCATION_PREFIX parameter isn't supported when you use catalog-vended credentials to connect to your catalog-linked database.
其中:
STORAGE_BASE_URLis the base URL for the active storage location associated with your external volume or vended credentials.BASE_LOCATIONis the path for a directory where Snowflake should write the table files (specified in CREATE ICEBERG TABLE), relative to your external volume location. If you're using catalog-vended credentials, this must be an absolute path that points to an allowed location defined by the remote catalog. Specifying a BASE_LOCATION is required for Delta-based tables.randomId是一个随机的、由 Snowflake 生成的 8 个字符的字符串。
BASE_LOCATION 已定义 |
BASE_LOCATION_PREFIX 已定义 |
路径 |
|---|---|---|
否 |
否 |
|
否 |
是 |
|
是 |
不适用(已忽略) |
|
** 使用 BASE_LOCATION 整理表存储**
要在同一 STORAGE_BASE_URL 下为多个 Iceberg 表整理存储中的文件,可考虑在 CREATE ICEBERG TABLE 语句中使用表名作为 BASE_LOCATION。这样,Snowflake 就会将数据和元数据写入包含表名的目录中。
例如:
CREATE OR REPLACE ICEBERG TABLE iceberg_table_1 (
col_1 int,
col_2 string
)
BASE_LOCATION = 's3://my-bucket/customer_iceberg/my_base_location1';
CREATE OR REPLACE ICEBERG TABLE iceberg_table_2 (
col_1 int,
col_2 string
)
BASE_LOCATION = 's3://my-bucket/customer_iceberg/my_base_location2';
该语句会在外部云存储中产生以下目录结构:
STORAGE_BASE_URL
|-- iceberg_table_1.<randomId>
| |-- data/
| |-- metadata/
|-- iceberg_table_2.<randomId>
| |-- data/
| |-- metadata/
Catalog-linked database: Hierarchical layout¶
This section describes the hierarchical layout for data and metadata directories for externally managed Iceberg tables that you create in a catalog-linked database.
When you create an externally managed Iceberg table in a catalog-linked database that uses the default flat directory layout
(PATH_LAYOUT = HIERARCHICAL), Snowflake writes all
Parquet data files by organizing them in a hierarchical directory structure under the data/ directory that is based on transforms that you
define when you create a table. For instructions on
how to enable this layout, see Partitioning with hierarchical paths. Snowflake writes all table metadata data files
under a single metadata/ directory.
备注
If you set PATH_LAYOUT = HIERARCHICAL without specifying a PARTITION BY clause, Snowflake uses the flat layout for the table. However, if you later enable partitioning on the table, Snowflake begins using a hierarchical layout with partitioned writes. For more information, see Partitioning with hierarchical paths.
For externally managed tables with a hierarchical layout, Snowflake writes Parquet data files and table metadata to your external cloud storage. The Parquet data files are organized in a hierarchical directory structure that is based on transforms that you define when you create a table.
Snowflake 使用以下模式构建路径,具体取决于为 BASE_LOCATION 或 BASE_LOCATION_PREFIX 参数指定的值。如果您指定了 BASE_LOCATION,Snowflake 不会使用路径中的 BASE_LOCATION_PREFIX。
备注
The BASE_LOCATION_PREFIX parameter is only supported when you use an external volume to connect to your catalog-linked database.
The BASE_LOCATION_PREFIX parameter isn't supported when you use catalog-vended credentials to connect to your catalog-linked database.
其中:
STORAGE_BASE_URLis the base URL for the active storage location associated with your external volume or vended credentials.BASE_LOCATIONis the path for a directory where Snowflake should write the table files (specified in CREATE ICEBERG TABLE), relative to your external volume location. If you're using catalog-vended credentials, this must be an absolute path that points to an allowed location defined by the remote catalog. Specifying a BASE_LOCATION is required for Delta-based tables.randomId是一个随机的、由 Snowflake 生成的 8 个字符的字符串。
BASE_LOCATION 已定义 |
BASE_LOCATION_PREFIX 已定义 |
路径 |
|---|---|---|
否 |
否 |
|
否 |
是 |
|
是 |
不适用(已忽略) |
|
** 使用 BASE_LOCATION 整理表存储**
要在同一 STORAGE_BASE_URL 下为多个 Iceberg 表整理存储中的文件,可考虑在 CREATE ICEBERG TABLE 语句中使用表名作为 BASE_LOCATION。这样,Snowflake 就会将数据和元数据写入包含表名的目录中。
The following example creates customer_region_summary and orders_by_status tables, which each use a hierarchical path layout
for their data files based on the following transforms:
The
customer_region_summarytable is partitioned byregionthe
orders_by_statustable is partitioned byorder_status
CREATE OR REPLACE ICEBERG TABLE customer_region_summary (
customer_id int,
region string
)
PARTITION BY (region)
PATH_LAYOUT = HIERARCHICAL
BASE_LOCATION = 's3://my-bucket/customer_iceberg/my_base_location1';
CREATE OR REPLACE ICEBERG TABLE orders_by_status (
order_id int,
order_status string
)
PARTITION BY (order_status)
BASE_LOCATION = 's3://my-bucket/customer_iceberg/my_base_location2';
该语句会在外部云存储中产生以下目录结构:
STORAGE_BASE_URL
|-- customer_region_summary.<randomId>
| |-- data/
| | |-- REGION=US/
| | | |-- part-00001-abc123.parquet
| | |-- REGION=EU/
| | |-- part-00002-def456.parquet
| |-- metadata/
|
|-- orders_by_status.<randomId>
|-- data/
| |-- ORDER_STATUS=SHIPPED/
| | |-- part-00001-ghi789.parquet
| |-- ORDER_STATUS=PENDING/
| |-- part-00002-jkl012.parquet
|-- metadata/
启用存储访问日志¶
要诊断问题并审核对外部卷相关存储位置的访问,可以启用存储日志记录。存储日志可帮助您确定文件丢失或损坏的原因。
启用存储提供商的日志记录。由于您拥有并管理 Iceberg 表的存储,Snowflake 无法在您的 Iceberg 存储位置启用日志或审核。
要了解存储提供商的存储访问日志,请参阅以下外部主题:
Amazon S3 的日志记录选项 (https://docs.aws.amazon.com/AmazonS3/latest/userguide/logging-with-S3.html)
Google Cloud Storage 的使用日志和存储日志 (https://cloud.google.com/storage/docs/access-logs)
Azure 存储分析日志记录 (https://learn.microsoft.com/en-us/azure/storage/common/storage-analytics-logging)
利用版本控制和对象保留功能保护文件¶
如果您的 Iceberg 表数据位于中央数据存储库(或数据湖)中,并由多个工具和服务操作,则可能会发生意外删除或损坏。要保护 Iceberg 表数据并确保意外删除或覆盖数据的检索,请使用存储提供商提供的存储生命周期管理和版本控制。
通过生命周期管理,您可以为存储对象设置保留和跟踪规则。要了解存储提供商的生命周期管理,请参阅以下外部主题:
管理 Amazon S3 的存储生命周期 (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)
Google Cloud Storage 的对象生命周期管理 (https://cloud.google.com/storage/docs/lifecycle)
Azure 中的生命周期管理策略 (https://learn.microsoft.com/en-us/azure/storage/blobs/lifecycle-management-overview)
为支持对象恢复,您还可以启用外部云存储的版本控制。
要为 Amazon S3 启用版本控制,请参阅 在桶上启用版本控制 (https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)。
要为 Google Cloud Storage 启用版本控制,请参阅 使用对象版本控制 (https://cloud.google.com/storage/docs/using-object-versioning)。
要为 Azure 启用版本控制,请参阅 启用 Blob 版本控制 (https://learn.microsoft.com/en-us/azure/storage/blobs/versioning-enable?tabs=portal#enable-blob-versioning)。
加密表文件¶
Snowflake 可以读取您使用常见的服务器端加密 (SSE) 方案加密的存储中的 Iceberg 表文件。您应该使用云服务提供商管理加密密钥,如果使用客户管理的密钥,则应授予 Snowflake 主体访问密钥的权限。
对于 Amazon S3,Snowflake 支持以下 SSE 选项:
SSE 选项 |
配置 |
|---|---|
使用 Amazon S3 托管密钥 (SSE-S3) 的 SSE |
在 CREATE EXTERNAL VOLUME 命令中指定 |
使用 AWS KMS 密钥 (SSE-KMS) 的 SSE |
在 CREATE EXTERNAL VOLUME 命令中指定 您还必须授予 SSE-KMS 加密所需的权限。有关说明,请参阅 为 Amazon S3 配置外部卷 中的第 3 步。 |
对于 Google Cloud Storage,Snowflake 支持以下 SSE 选项:
SSE 选项 |
配置 |
|---|---|
使用存储在 Google Cloud KMS 中的密钥的 SSE |
在 CREATE EXTERNAL VOLUME 命令中指定 您还必须 授予 GCS 服务账户对 Google Cloud Key Management Service 密钥的权限。 |
Configure replication for Snowflake-managed Iceberg tables¶
You can replicate Snowflake-managed Iceberg tables by using a failover or replication group. Snowflake replicates a Snowflake-managed Iceberg table when you add the following objects to a failover or replication group:
The parent database for the table
The external volume that the table uses
For more information, see 为 Snowflake 管理的 Apache Iceberg™ 表配置复制.