Python 自动将文件从s3加载到snowflake
在s3 bucket daily中,新的JSON文件正在转储,我必须创建一个解决方案,在最新的文件到达时选择它,解析JSON并将其加载到Snowflake数据仓库。请有人分享您的想法我们如何才能实现这一目标取决于您的需要,有许多方法可以实现这一目标。我建议创建一个事件来触发lambda函数 另一个选项是在文件到达s3时创建SQS消息,并根据需要让ec2实例轮询队列和进程 编辑:下面是关于如何从s3创建事件和触发lambda函数的更详细说明。文档由Snowflake提供Python 自动将文件从s3加载到snowflake,python,amazon-s3,snowflake-cloud-data-platform,Python,Amazon S3,Snowflake Cloud Data Platform,在s3 bucket daily中,新的JSON文件正在转储,我必须创建一个解决方案,在最新的文件到达时选择它,解析JSON并将其加载到Snowflake数据仓库。请有人分享您的想法我们如何才能实现这一目标取决于您的需要,有许多方法可以实现这一目标。我建议创建一个事件来触发lambda函数 另一个选项是在文件到达s3时创建SQS消息,并根据需要让ec2实例轮询队列和进程 编辑:下面是关于如何从s3创建事件和触发lambda函数的更详细说明。文档由Snowflake提供 查看,它允许您在系统
查看,它允许您在系统内执行此操作,使操作(可能)更加简单。需要考虑一些方面,例如批量数据还是流式数据,如果存在错误的数据或格式,是否希望重新加载文件,或者是否希望使其成为一个通用过程,以便能够处理不同的文件格式/文件类型(csv/json)和阶段。
在我们的例子中,我们使用Python和Luigi构建了一个通用的s3到Snowflake加载,并且还使用SSIS实现了相同的加载,但只针对csv/txt文件。在我的例子中,我有一个Python脚本,它可以获取有关bucket的信息 一旦检测到更改,我就调用SnowPipe上的REST端点Insertfiles 分阶段:
- 检测S3变化
- 获取S3对象路径
- 在S3中解析内容并转换为CSV(同一个桶或其他雪管可以连接)
- 调用SnowPipe REST API
- 使用公钥创建用户
- 使用AWS凭证在SnowFlake上创建舞台,以便访问S3
- 使用用户角色在雪花上创建管道
- 签JWT
希望有帮助。文件格式为JSON,其结构始终保持不变,如果出现任何错误,我将尝试实现电子邮件触发。所以我的最终目标是将文件从s3 bucket加载到snowflake数据仓库。请帮助我,如果你有任何解决方案,请你分享任何链接,显示加载数据从s3到雪花每当新文件到达s3桶。非常感谢,这是我们使用的过程-snowpipe将自动为您设置一个SQS队列,您可以将该队列与s3事件触发器结合使用,以将数据加载到表中。对我们来说,工作就像一场梦!这里有一篇很好的博客文章:@akhrot我用雪花的例子更新了我的答案