Snowpipe Streaming:高性能架构¶
Snowpipe Streaming 的高性能架构专为数据密集型的现代组织打造,能够实现近实时见解。这种下一代架构显著提高了实时引入 Snowflake 的吞吐量、效率和灵活性。
有关经典架构的信息,请参阅 Snowpipe Streaming – 经典架构。有关经典 SDK 和高性能 SDK 之间的区别,请参阅 经典 SDK 和高性能 SDK 的比较。
主要功能¶
吞吐量和延迟:
高吞吐量:每张表支持高达 10 GB/s 的引入速度。
近实时见解:实现端到端引入,查询延迟在 5 到 10 秒内。
计费:
简单、透明、基于吞吐量的计费。有关更多信息,请参阅 Snowpark Streaming 高性能架构:了解您的成本。
灵活引入:
Java SDK:将新型
snowpipe-streaming
SDK 与基于 Rust 的客户端核心结合使用,以提高客户端性能,降低资源使用量。REST API:提供直接引入路径,简化轻量级工作负载、IoT 设备数据和边缘部署的集成。
数据优化处理:
传输中的数据转换:支持在引入期间使用 PIPE 对象内的 COPY 命令语法清理和重塑数据。
增强的通道可见性:主要通过 Snowsight 中的 通道历史 视图和新增的
GET_CHANNEL_STATUS
API 增强对引入状态的了解。
此架构推荐用于:
持续引入大容量的流式工作负载。
为时间敏感的决策提供实时分析和仪表板。
高效集成来自 IoT 设备和边缘部署的数据。
寻求透明、可预测且基于吞吐量计费的流式引入方案的组织。
新概念:PIPE 对象¶
该架构继承了 Snowpipe Streaming Classic 中的核心概念(如通道和偏移令牌),同时引入了一个核心组件:PIPE 对象。
PIPE 对象是一个在 Snowflake 中具有名称的对象,用作所有流式引入数据的入口点和定义层。它提供以下功能:
数据处理定义:定义流式数据在写入目标表之前的处理方式,包括用于转换或架构映射的服务端缓冲机制。
允许数据转换:通过结合 COPY 命令的转换语法,支持数据在传输中的实时处理(例如:筛选、列重排、简单表达式等)。
表功能支持:支持将定义的群集密钥、DEFAULT 值列和 AUTOINCREMENT 列(或 IDENTITY 列)引入到表中。
架构管理帮助定义传入流数据的预期架构,并将其映射到目标表列,从而实现服务器端架构验证。
与 Snowpipe Streaming Classic 的区别¶
对于熟悉经典架构的用户,高性能架构引入了以下更改:
新的 SDK 和 APIs:需要使用新的
snowpipe-streaming
SDK(Java SDK 和 REST API),因此迁移时必须更新客户端代码。PIPE 对象要求:所有数据引入、配置(如转换)和架构定义均通过服务器端 PIPE 对象进行管理,这与 Classic 架构中以客户端配置为主的方式不同。
通道关联:客户端应用程序针对特定 PIPE 对象打开通道,而非直接基于目标表。
架构验证:由原先主要在客户端 (Classic SDK) 执行的架构验证,转为 Snowflake 在服务端基于 PIPE 对象执行。
迁移要求:需要修改客户端应用程序代码以适配新 SDK,并在 Snowflake 中定义 PIPE 对象。
限制和注意事项¶
Snowpipe ON_ERROR 选项:STREAMING Snowpipe ON_ERROR 选项仅支持 CONTINUE。
支持的架构(Rust 核心):Arm64 Mac、Windows、Arm64-linux 和 X86_64-linux。
Linux 要求:如果您在 Linux 上使用 SDK,则您的系统需要安装至少 2.18 版本的 glibc 库。
部署环境:仅支持 AWS 部署。
私有链接:不支持 PrivateLink。
聚类表(引入):虽然可以将聚类表作为目标表,但在引入过程中不会执行聚类操作。
复制:不支持副本。
ALTER PIPE SET PIPE_EXECUTION_PAUSED = true
:虽然 openChannel 在暂停时会失败,但引入可能不会立即停止。授权角色:默认角色用于授权。计划在未来提供指定其他角色的功能。
时区:SDK 会自动使用 UTC。用户无法更改此设置。
空负载限制:SDK 和 REST API 不支持提交包含空负载的行集。提交的内容必须包含至少一行数据才能成功引入。
错误消息可见性:虽然可以通过通道状态响应查看错误消息,但这些信息不会显示在新的通道历史视图中。