【问题标题】:How to increase the snowpipe warehouse size如何增加雪管仓库的大小
【发布时间】:2021-06-10 09:53:14
【问题描述】:

我知道snowpipe使用内部仓库snowpipe。

但是有一个要求,我需要使用雪管加载像 30GB 大小的大单个文件(连续数据摄取,文件每周一次但随时到达 S3)。

而且我们无法控制拆分文件或更改格式。

有没有一种方法可以将雪管仓库的大小定义为 large 或 XLarge。

如果不是,那么处理这种情况的最佳方法应该是什么,以便更快地加载文件

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    Snowpipe 的操作与直接运行 COPY 命令没有什么不同。仓库的大小对单个文件的加载速度没有影响。更大的仓库的好处是可以并行加载的文件数量,这就是为什么最好的做法是将文件拆分成更小的部分。如果您确实无法拆分文件(或创建一个 Lambda 进程来为您拆分落在 S3 上的文件),那么您将无法控制该文件加载到 Snowflake 中的速度。

    我会探索您是否能够使用 Lambda 或其他脚本运行命令,这些脚本会将位于 S3 上的文件拆分为多个文件,并将这些较小的文件放入 Snowpipe S3 存储桶中。如果你能做到这一点,Snowpipe 将并行加载文件,并且对你来说效率更高。

    【讨论】:

    • 对此我不太确定。我测试过,你的陈述对我来说似乎不正确。如果我遗漏了什么,请纠正我。我使用雪管加载了一个 7gb 的单个文件,花了 13 分钟。现在我测试了在不同的表中手动加载相同的文件,仓库大小为 XLarge,并在 7 分钟内完成。因此,从技术上讲,即使加载单个文件,仓库大小也很重要
    • 您是否尝试在 XS 仓库中加载相同的单个文件? COPY INTO 仅利用每个文件的线程。所以,一个 XS 仓库有 8 个线程,所以一个 COPY 命令只会使用其中的 1 个。如果您使用 XL,它仍然只会使用 XL 拥有的 128 个线程中的 1 个。假设仓库中有可用的线程来运行它们,则不会有任何区别。如果您发现 Snowpipe 比您在 COPY 命令(单文件!!!!)上看到的要慢,我建议您使用支持票来解释为什么会这样。
    • 还有一些事情正在发生。我可以确认我尝试使用 Xsmall 加载一个 13 GB 的文件,运行半小时只完成了 10%,所以我中止了查询。接下来,我使用大型仓库重新运行相同文件的相同副本,并在 20 分钟内完成复制。
    • 您能分享您的 COPY 声明吗?您是否在其中进行了很多转换或其他转换逻辑?您的文件大于我们推荐的大小,如果您要进行大量转换,您可能会创建一些较小的仓库无法处理的额外工作。那里的建议是……不要那样做。将数据直接加载到临时表中,然后直接在 Snowflake 中运行转换。这让您 (a) 在 Snowpipe 或其他中更快地摄取,以及 (b) 更好地控制执行转换步骤所需的仓库大小。
    • 而且,这 2 个步骤的总时间将少于您现在正在执行的 1 个步骤过程......当然,假设您有转换逻辑。
    【解决方案2】:

    Snowpipe 使用 Snowflake 提供的计算资源,所以没有办法设置仓库的大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多