Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动将文件从s3加载到snowflake_Python_Amazon S3_Snowflake Cloud Data Platform - Fatal编程技术网

Python 自动将文件从s3加载到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提供 查看,它允许您在系统

在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
我还尝试了与TOS BigData的Talend工作


希望有帮助。

文件格式为JSON,其结构始终保持不变,如果出现任何错误,我将尝试实现电子邮件触发。所以我的最终目标是将文件从s3 bucket加载到snowflake数据仓库。请帮助我,如果你有任何解决方案,请你分享任何链接,显示加载数据从s3到雪花每当新文件到达s3桶。非常感谢,这是我们使用的过程-snowpipe将自动为您设置一个SQS队列,您可以将该队列与s3事件触发器结合使用,以将数据加载到表中。对我们来说,工作就像一场梦!这里有一篇很好的博客文章:@akhrot我用雪花的例子更新了我的答案