【问题标题】:Snowflake's Asynchronous External function not respecting HttpStatus 429雪花的异步外部函数不尊重 HttpStatus 429
【发布时间】:2021-11-28 03:01:12
【问题描述】:

我已经实现了一个符合Snowflake's Asynchronous External Function.的API

在我们开发的系统中,我们使用 AWS API 网关、Lambda 函数和第三方 API (TPA)。 在我们的场景中,我们将某些信息存储在 Snowflake 的表中,并尝试使用 Snowflake 的External User Defined Function 来丰富这个表。

如果记录数较少,我们可以丰富表。如果我们尝试丰富这 300 万条记录,那么在一定时间后,我们的 TAPI 开始发送 HTTP 429。这是一个指示符,告诉我们的 lambda 函数减慢 Snowflake 的请求数。

我们了解这一点,当 Lambda 函数获取 HTTP 429 时,它会在任何轮询/发布请求中将 HTTP 429 发送回 Snowflake。预计 Snowflake 会减慢请求速度,而不是抛出错误并停止进一步处理。

下面对雪花的回应

{
   "statusCode" : 429
}

这是一个固定的情况,看起来 Snowflake 在请求-回复模式中不遵守 HTTP 429。

【问题讨论】:

    标签: aws-lambda aws-api-gateway snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    在使用外部函数时,Snowflake 确实会处理 HTTP 4xx 响应。 你参与支持了吗?我曾与遇到此问题的客户合作过,雪花团队能够进行审核。

    AWS API 网关的默认限制为 10000 rps

    请查看Designing High Performance External Functions

    远程服务在过载时应返回 HTTP 响应代码 429。 如果 Snowflake 看到 HTTP 429,Snowflake 会缩减它的速率 发送行,并重试发送未发送的成批行 处理成功。

    您的解决方案是:

    与 AWS 合作提高您的 API Gateway 速率限制。

    但是,一些代理服务,包括 Amazon API Gateway 和 Azure API 管理,具有默认使用限制。当请求率 超出限制,这些代理服务会限制请求。如果 必要时,您可能需要要求 AWS 或 Azure 增加您的配额 在您的代理服务上。

    尝试使用更小的仓库,这样雪花每秒向 API 网关发送的数据量更少。这有你跑得慢的明显缺点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多