从S3到Snowflake和性能

我在S3中存储了大量作为小型JSON文件的事件。现在,我需要使用snowpipes将这些文件摄取到snowflake中。发送到snowflake的请求数量是否与性能有关?我应该将这些微小的文件合并成一个更大的JSON,然后让snowflake接收吗?

我知道snowflake可以自动检测S3上的更改并尝试刷新其外部表,但是我是否应该让小文件不断触发此过程?

winniezrk 回答:从S3到Snowflake和性能

是的,可以进行的API请求数量是有限制的。此费率存在于帐户级别,而不是用户级别或管道级别。每个端点都有自己的令牌库。

loadHistoryScan:

以20,000个令牌开头。
每次通话消耗1个令牌
每个提取的文件重新填充5个
每分钟补充1张


ingestFile:

unknown开头
每个 文件
消耗1个令牌 每分钟补充15,000张

对于ingestFile端点,API调用中的每个 文件 使用1个令牌,无论您提交5000个调用包含一个文件还是一个调用包含5000个调用,这都是正确的文件。

重要的是,不要重新提交相同的文件,因为每个重新提交的文件都会消耗令牌,但是copy_history表函数不会告诉您管道是否已跳过文件。


insertReport:

unknown开头
每次通话消耗1个令牌
补充率unknown


一个帐户在任何时候最多可以拥有100,000个令牌;一旦达到这一点,笔芯就会停止,直到您开始进行API调用并再次使用令牌。

Snowflake建议加载的文件大小为10 MB至100 MB, 压缩 。如果您的要求允许您有时间将这些小文件合并为一个较大的文件,那么可以,我建议采用这种方法。

,

雪花有一些文档可以很好地回答这个问题here。简而言之:理想情况下,您的文件很大,但又不是那么大和/或复杂,以至于需要花费一分钟以上的时间来处理。

我有一些处理很多小文件的snowpipe,没有太多麻烦,但是从大文件中您可能至少会获得更好的性能。通常,SnowFlake是针对较大批次进行优化的。

另一个注意事项是Snowpipe pricing包含已加载的文件数量,因此您可能还会通过将微小文件合并在一起而节省一些费用。

本文链接:https://www.f2er.com/2803823.html

大家都在问