Snowpark Container Services:失败批处理重试逻辑和 DESC FUNCTION 命令输出中新列的变更(待定)¶
失败批处理请求的重试逻辑的变更¶
当您执行包含服务函数的查询时,Snowflake 会发送一系列 HTTP 请求,每个请求都包含指向服务的一批行。如果服务返回错误(HTTP 错误 404、429、500、502、503 或 504),Snowflake 会重试请求。当 Snowflake 重试时,它会在指数回归算法确定的延迟后重新发送同一批次。
- 变更前:
如果重试之间的总睡眠时间达到 1 小时,Snowflake 会将批处理执行标记为失败,并且服务函数执行也会失败。
- 变更后:
默认情况下,Snowflake 会重试失败的批处理 3 次。您可以执行 CREATE FUNCTION 或 ALTER FUNCTION 命令与 MAX_BATCH_RETRIES 参数,选择性指定您希望 Snowflake 重试批处理的次数。例如:
对于 CREATE FUNCTION 命令,指定 MAX_BATCH_RETRIES 参数,如下所示:
CREATE [ OR REPLACE ] FUNCTION <name> ( [ <arg_name> <arg_data_type> ] [ , ... ] ) RETURNS <result_data_type> … [ MAX_BATCH_RETRIES = <integer> ] AS '<http_path_to_request_handler>' …
对于 ALTER FUNCTION 命令,使用
SET MAX_BATCH_RETRIES = integer
设置重试次数:ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET MAX_BATCH_RETRIES = <integer>
DESCRIBE FUNCTION (Snowpark Container Services) 命令:输出中的新列¶
启用此行为变更捆绑包后,DESCRIBE FUNCTION (Snowpark Container Services) 命令的输出包括以下新列:
列名称 |
描述 |
---|---|
MAX_BATCH_RETRIES |
服务函数处理的每批行的最大重试次数。 |
ON_BATCH_FAILURE |
当一批行达到最大重试限制时,服务函数的行为。 |
BATCH_TIMEOUT_SECS |
Snowflake 在终止批处理请求之前等待处理单批行(包括重试和异步请求轮询)的最长时间。 |
参考:1938