6

问题

  1. 使用 Snowpipe 加载小文件(例如 4K)比 16K、500K 或 1-10Mb(推荐的文件大小)要贵多少。注意:这个问题意味着加载小文件比推荐的 1-10Mb 更昂贵。

  2. 了解最佳实践是加载大小为 1-10Mb 的文件,但我需要近乎实时的交付(几分钟)。我可以连接文件以使它们更大,但不能等待超过 60 秒才能将微批处理发送到 S3 并因此发送到 Snowpipe。我目前每 30 秒写一次我所有的内容,但我每 60 秒看到一次 Snowpipe 报告。这是否意味着将文件写入 S3 的频率超过 60 秒是没有意义的?IE。如果我每 30 秒发送一次文件,它实际上会减少平均延迟,或者是 60 秒的最小雪管周期。

  3. 加载 4K 文件(每天大约 200Mb,每个文件 4K),每 GB 大约需要 20 个积分,这非常昂贵。如果我加载(例如)1-10Mb 范围内的 CSV 文件,使用 Snowpipe 时每 GB 的成本应该是多少?如果我保持在 1-10Mb 范围内,每 GB 的成本会下降吗?

  4. 有没有更快/更便宜的替代方法将数据输入雪花?注意:目前使用 Parquet 格式的 Snowpipe 到 VARIANT,然后使用 STREAMS 和 TASKS 重构数据以进行近乎实时的分析。了解使用 Snowpipe 比使用虚拟仓库更便宜。这是真的?我怀疑真正的答案是“这取决于”。但是“取决于什么”。

  5. 除了我的近实时要求外,我还有许多系统提供批量提要(CSV 格式,大约每 4 小时一次,预计延迟在 30 分钟内处理和呈现以供分析。文件大小在此处有所不同,但大多数为 1Mb到 1Gb 范围。我应该使用相同的 Snowpipe 解决方案,还是我最好从 Airflow 编排工作并在专用虚拟仓库上使用 COPY 命令和 SQL 语句?或者实际上,您会推荐什么替代方案?

  6. 我可以看到 Snowpipe 加载 4K 文件很昂贵,而且可能比更大的文件便宜。如果我加载超过 10Mb 的文件,这些文件会再次变得更加昂贵吗?IE。成本是“钟形曲线”还是趋于平缓。

背景

  1. 我正在使用 Snowpipe 提供近乎实时 (NRT) 的数据加载解决方案。
  2. 我大约每 30 秒从大约 30 个表中将数据从 Kafka 复制到 S3,并且使用 Snowpipe 自动将其加载到 Snowflake。
  3. 数据以 Parqet 格式传递给我,加载到 Variant 中,然后是一个视图以将属性提取到表中,然后再使用 Tasks 和 SQL 进行重组以进行分析。
  4. 在一天之内,我发现加载了 50,000 个文件,文件大小各不相同,但每个文件的平均文件大小为 4K。
  5. 我可以看到每分钟加载大约 30 个文件(即每分钟加载大约 100K)。
  6. 我正在尝试平衡几个非功能性需求。a) 有效使用积分。意识到小文件很昂贵。b)减少延迟(我试图从 Kafka 到仪表板的管道最长大约 2-5 分钟)。c) 简单 - IE。它需要易于理解和维护,因为我希望解决方案能够大规模增长 - IE。从大约 20 张桌子到数百张桌子 - 都需要近乎实时
  7. 我将(在接下来的 3 个月内)每 4 小时进行一次 CSV 批量加载。它们是完全独立的数据源(来自 NRT),并且具有更密集的处理和 ELT。我想知道我是否应该为这些使用 Snowpipe 或 COPY。
4

1 回答 1

3
  1. Snowpipe 是无服务器的,并且按使用量计费。与建立仓库相比,无服务器方法的开销要少得多,但仍然存在一些开销。因此,您发送信息的频率越高,成本就越高。多少钱?试试看,没人能告诉你。
  2. 我不是这里的专家,但 Snowflake 不是为实时工作负载而构建的。市场营销可能会告诉您其他信息。在最坏的情况下,您需要等待几分钟,直到您的数据完全刷新。Snowflake 擅长处理巨大的数据负载,您可以等待更长的时间。
  3. 再次尝试一下,一个指标是您的数据摄取量使仓库保持忙碌状态。如果它运行 1 分钟但您的查询在 1 秒内完成,您可能会降低 60 倍的成本。
  4. 假设您没有完全占用仓库,最便宜的方式应该是您的用例的雪管。
  5. 复制进去应该没问题。
  6. 我不知道。:) 试试看。我想这并没有太大的区别。您可能会遇到大文件 (1G+) 的问题。
于 2020-06-15T19:05:12.533 回答