问题
使用 Snowpipe 加载小文件(例如 4K)比 16K、500K 或 1-10Mb(推荐的文件大小)要贵多少。注意:这个问题意味着加载小文件比推荐的 1-10Mb 更昂贵。
了解最佳实践是加载大小为 1-10Mb 的文件,但我需要近乎实时的交付(几分钟)。我可以连接文件以使它们更大,但不能等待超过 60 秒才能将微批处理发送到 S3 并因此发送到 Snowpipe。我目前每 30 秒写一次我所有的内容,但我每 60 秒看到一次 Snowpipe 报告。这是否意味着将文件写入 S3 的频率超过 60 秒是没有意义的?IE。如果我每 30 秒发送一次文件,它实际上会减少平均延迟,或者是 60 秒的最小雪管周期。
加载 4K 文件(每天大约 200Mb,每个文件 4K),每 GB 大约需要 20 个积分,这非常昂贵。如果我加载(例如)1-10Mb 范围内的 CSV 文件,使用 Snowpipe 时每 GB 的成本应该是多少?如果我保持在 1-10Mb 范围内,每 GB 的成本会下降吗?
有没有更快/更便宜的替代方法将数据输入雪花?注意:目前使用 Parquet 格式的 Snowpipe 到 VARIANT,然后使用 STREAMS 和 TASKS 重构数据以进行近乎实时的分析。了解使用 Snowpipe 比使用虚拟仓库更便宜。这是真的?我怀疑真正的答案是“这取决于”。但是“取决于什么”。
除了我的近实时要求外,我还有许多系统提供批量提要(CSV 格式,大约每 4 小时一次,预计延迟在 30 分钟内处理和呈现以供分析。文件大小在此处有所不同,但大多数为 1Mb到 1Gb 范围。我应该使用相同的 Snowpipe 解决方案,还是我最好从 Airflow 编排工作并在专用虚拟仓库上使用 COPY 命令和 SQL 语句?或者实际上,您会推荐什么替代方案?
我可以看到 Snowpipe 加载 4K 文件很昂贵,而且可能比更大的文件便宜。如果我加载超过 10Mb 的文件,这些文件会再次变得更加昂贵吗?IE。成本是“钟形曲线”还是趋于平缓。
背景
- 我正在使用 Snowpipe 提供近乎实时 (NRT) 的数据加载解决方案。
- 我大约每 30 秒从大约 30 个表中将数据从 Kafka 复制到 S3,并且使用 Snowpipe 自动将其加载到 Snowflake。
- 数据以 Parqet 格式传递给我,加载到 Variant 中,然后是一个视图以将属性提取到表中,然后再使用 Tasks 和 SQL 进行重组以进行分析。
- 在一天之内,我发现加载了 50,000 个文件,文件大小各不相同,但每个文件的平均文件大小为 4K。
- 我可以看到每分钟加载大约 30 个文件(即每分钟加载大约 100K)。
- 我正在尝试平衡几个非功能性需求。a) 有效使用积分。意识到小文件很昂贵。b)减少延迟(我试图从 Kafka 到仪表板的管道最长大约 2-5 分钟)。c) 简单 - IE。它需要易于理解和维护,因为我希望解决方案能够大规模增长 - IE。从大约 20 张桌子到数百张桌子 - 都需要近乎实时
- 我将(在接下来的 3 个月内)每 4 小时进行一次 CSV 批量加载。它们是完全独立的数据源(来自 NRT),并且具有更密集的处理和 ELT。我想知道我是否应该为这些使用 Snowpipe 或 COPY。