将 Snowpipe Streaming 与 Apache Iceberg™ 表结合使用¶
借助 Snowflake Ingest SDK 3.0.0 及更高版本,Snowpipe Streaming 可以将数据引入 Snowflake 管理的 Apache Iceberg 表中。Snowpipe Streaming Ingest Java SDK 支持加载到标准 Snowflake 表(非 Iceberg)和 Iceberg 表。
通过 Snowpipe Streaming API 发送的数据通过一个或多个通道引入行,这些通道可根据指定的 MAX_CLIENT_LAG
自动刷新。
MAX_CLIENT_LAG
属性可控制流式引入的延迟。
对于标准 Snowflake 表(非 Iceberg),默认
MAX_CLIENT_LAG
为 1 秒。对于 Iceberg 表,默认
MAX_CLIENT_LAG
为 30 秒。
Snowflake 使用 外部卷 连接到您的存储位置,Snowpipe Streaming 刷新数据以创建与 Iceberg 兼容的 Parquet 数据文件,其中包含相应的 Iceberg 元数据。这些 Parquet 数据和元数据文件被上传到您配置的外部云存储位置,并作为 Snowflake 管理的 Iceberg 表提供,并在 Snowflake 中注册为 Iceberg 目录。
配置¶
使用您配置的外部卷创建 Snowflake 管理的 Iceberg 表,并在开放 通道 请求中指定 Iceberg 表名称。
要启用支持 Snowflake 管理的 Iceberg 表的 Snowpipe Streaming,您需要在 profile.json
文件中设置以下属性 ENABLE_ICEBERG_STREAMING=true
。
支持的数据类型¶
Snowflake Ingest SDK 支持大多数 Iceberg 数据类型,与 Snowflake 目前支持的类型相同。有关更多信息,请参阅 Apache Iceberg™ 表的数据类型。
Snowflake Ingest SDK 支持引入到以下三种 结构化数据类型:结构化 ARRAY、结构化 OBJECT、结构化 MAP。
使用说明¶
流式传输到 Snowflake 管理的 Iceberg 表的默认
MAX_CLIENT_LAG
为 30 秒,以确保优化的 Parquet 文件。您可以将该属性设置为较低的值,但我们建议 不要 这样做,除非吞吐量非常高。Ingest SDK 支持对小型 Parquet 文件进行异步自动无服务器压缩。
同一个客户端应用程序不能同时用于 Iceberg 表和非 Iceberg 表。
Snowflake 管理的 Iceberg 表不支持客户端加密。
与 Iceberg 兼容的 Parquet 文件基于 Iceberg 表上指定的 STORAGE_SERIALIZATION_POLICY 而创建。
Snowpipe Streaming 仅支持 Snowflake 作为 Iceberg 目录,但它还支持 与 Snowflake Open Catalog 同步。
Snowpipe Streaming 引入到 Snowflake 管理的 Iceberg 表这一服务在有限的时间内免费提供。
限制¶
Snowpipe Streaming 所记录的 限制 也适用于支持 Iceberg 表的 Snowpipe Streaming。