高性能 Snowpipe Streaming 中的错误处理¶
本主题概述了高性能版本的 Snowpipe Streaming 中可用的错误处理机制。这种增强的方法提供了详细的错误信息,并改进了整体错误处理流程,从而提供了更强大、内容更丰富的体验。
高性能架构中的主要错误处理功能¶
增强了通道状态端点:此版本扩展了通道状态端点,以提供更全面的错误信息。
细化错误详情:高性能版本提供了更详细的错误信息,有助于确定错误发生的位置,并找出引入问题的根本原因。
改善了客户端体验:高性能版本简化了客户端的错误处理,降低了错误推理和恢复的复杂性。
新增通道历史记录视图:Snowflake 还推出了 SNOWPIPE_STREAMING_CHANNEL_HISTORY 视图,提供通道活动的历史记录,以便监控和定位错误。此功能使您能够跟踪错误趋势并主动解决潜在问题。
通道状态端点详情¶
高性能架构推出了新的通道状态端点,以提供更详细的信息。此端点返回有关通道的时间点信息。
除了经典架构的通道状态信息(statusCode
、persistedOffsetToken
)外,高性能架构还包括以下内容:
channel_status_code
:表示流式通道的当前运行状态。此代码提供了通道运行状况和引入数据能力的高级指示。last_commited_offset_token
:表示 Snowflake 成功提交到目标表的最后行集的偏移量标记。这对于跟踪进度和确保数据交付至关重要。created_on_ms
:时间戳(以毫秒为单位),表示最初在 Snowflake 中创建流式通道的时间。database_name
:流式通道被配置为引入数据的数据库的名称。schema_name
:流式通道目标表所在的指定数据库中架构的名称。pipe_name
:Snowpipe 对象的名称,该对象被配置为利用此 Snowpipe Streaming 通道将数据引入到特定目标表中。channel_name
:用户为特定 Snowpipe Streaming 通道实例创建的名称。rows_inserted
:自该流式通道创建以来,通过该流式通道成功插入到目标表中的数据行总数统计。rows_parsed
:Snowpipe Streaming 服务为此通道处理和解析的数据行总数统计。(但不一定要插入,例如,由于错误)。rows_error_count
:在处理过程中遇到错误并因此被 Snowpipe Streaming 服务拒绝的该通道的数据行总数统计。last_error_offset_upper_bound
:最后一个包含错误的行集的偏移标记范围的上限。这有助于确定数据流中最近错误的大致位置。last_error_message
:与最新错误代码对应的可读消息。last_error_timestamp
:表示该流式通道中最近一次出现错误的时间戳。snowflake_avg_processing_latency_ms
:Snowflake 服务在处理该通道接收到的行集时观察到的平均延迟(以毫秒为单位)。通过该指标可深入了解 Snowflake 中引入管道的性能。
高性能架构中的错误处理流程¶
客户端发送数据:客户端应用程序使用 Snowpipe Streaming SDK 通过
appendRow(s)
API 向 Snowflake 发送数据。服务器处理:Snowflake 服务处理数据。这涉及:
缓冲数据。
解析和验证数据。
将数据提交到表中。
错误检测:在服务端处理的任何阶段都可能发生错误。
错误记录:Snowflake 记录有关上次发生的错误的详细信息,包括:
最后一个包含错误的行集的偏移标记范围的上限。这有助于确定数据流中最近错误的大致位置。
错误消息。
时间戳。
错误报告:
增强的通道状态端点提供了对记录的错误信息的访问权限。
客户端可以查询此端点以检索上次发生的错误的详细信息。
Snowflake 还推出了 SNOWPIPE_STREAMING_CHANNEL_HISTORY 视图,提供通道活动的历史记录,其中包括错误及其偏移量。
客户端操作:客户端应用程序使用错误信息来执行以下操作:
确定错误的原因。
实现适当的错误处理逻辑,例如:
重试失败的操作。
记录错误。
提醒管理员。
将错误的数据移至死信队列。
重新开放通道。