我期望每天通过S3将10,000 (小,~ 10KB)文件流到Snowflake中,并在一天中均匀分布。我计划使用Snowpipe文档中概述的S3事件通知来实现自动化。我还想把这些文件保存在S3上,独立于雪花。关于如何从S3摄取数据,我有两个选择:
s3://data-lake/2020-06-02/objects
/2020-06-03/objects
.
.
/2020-06-24/objects或
s3://snowpipe specific bucket/objects从最佳实践/计费的角度来看,我是否应该直接从我的数据湖中获取数据-这意味着我的“创建或替换存储集成”和“创建或替换阶段”语句引用了上面的顶级“s3:// data - lake”?或者,我是否应该为Snowpipe摄取创建一个专用的S3存储桶,并在一两天后使该存储桶中的对象过期?
如果我给它一个顶层的文件夹,里面有成千上万的对象,比我给它一个小的,有控制的,专用的文件夹,里面只有几个对象,是不是要做更多的工作(因此给我更多的账单)来摄取它?当通知发出时,S3通知服务是否会告诉Snowpipe有什么新内容,或者Snowpipe是否必须列出一个列表,并将其与已摄取的对象列表进行比较?
在这种情况下,https://docs.snowflake.com/en/user-guide/data-load-snowpipe-auto-s3.html的文档没有提供任何具体的指导。
发布于 2020-06-26 04:45:06
每当添加新文件时,集成都会收到来自AWS的消息。如果该文件与后台文件的文件格式、文件路径等相匹配,则会对该文件运行管道中的COPY INTO语句。
集成接收与您的阶段筛选器不匹配的额外消息的开销最小,据我所知,该源中的其他文件也没有开销。
所以我相当确定,只要你的舞台设置正确,这两种方式都会工作得很好。
在过去的6个月里,我们一直在使用类似的设置,每天将大约5000个永久文件放到一个Azure存储帐户中,将文件划分到不同的目录中,这些目录对应于不同的Snowflake阶段,并且在复制时没有明显的额外延迟。
https://stackoverflow.com/questions/62559478
复制相似问题