Snowflake数据管道问题,尤其是流问题



背景

我在我们的生产雪花数据库中实现了雪花数据管道(s3日志文件>SNS>管道>阶段表>流>任务>存储的proc/UDF>最终表(。

虽然在我们的开发数据库中,事情的规模较小,但考虑到试图流式抛出的数据量(6416006096条记录和不断增长(,生产管道似乎已经停止工作。

问题

到目前为止,经过一些调查,看起来s3log>SNS>pipe>stage表还可以,但我认为任务从流中检索记录的地方。。。流没有过时。我花了很多时间阅读流上的文档,但没有找到任何关于我当前问题的帮助。

看起来流有太多的数据要返回——当我试图从流中获得计数(*(或限制为10的*时,它在8分钟后不会返回(并且正在计数(。。。

即使我可以限制返回的数据,我也尝试过,一旦你从事务中的流中选择,即使你不想要所有的更改,你也可以丢失所有的更改(即,使用where子句进行过滤(。。。

问题

有没有什么方法可以在不重置流的情况下从流中返回任何内容?

是否可以在不丢失事务中所有更改的情况下从流中分块结果?

流是否有一些未记录的限制——我达到了吗?

关注

我不想关闭数据管道bc,这意味着我可能必须重新开始,但我想如果我没有得到答案,我将不得不这样做(我也联系了支持部门,但尚未收到回复(。考虑到流和任务仍然只是预览,我想这不应该是一个惊喜,但我被告知它们现在将是Snowflake的GA。

是否有任何方法可以在不重置流的情况下从流中返回任何内容?

您应该能够从流中进行选择而无需重置它。只有在DML中使用它(例如:插入mytable作为从流中选择*(才会重置它。

是否可以在不丢失事务中所有更改的情况下从流中分块结果?

不,流不支持分块。

流是否有一些未记录的限制——我达到了吗?

我不认为有未记录的限制,流本质上是表上的范围,所以如果底层表中有很多数据,可能需要一段时间才能扫描

其他一些注意事项:

  • 您使用的仓库大小合适吗?如果流中有大量数据,并且有大量由更新、删除和插入组成的DML,您可能需要重新考虑仓库大小。我相信Snowflake会进行一些分区级别的比较,以协调添加和删除的数据。

  • 你能"收紧"从流中读取的频率,这样每次处理的数据就更少了吗?

  • 根据您感兴趣的数据类型,Snowflake提供了仅附加流类型,仅显示添加的数据。这使得扫描速度更快。

相关内容

最新更新