自动将文件从s3加载到雪花

时间:2019-01-15 06:54:01

标签: python amazon-s3 snowflake-datawarehouse

在s3存储桶中,每天都有新的JSON文件正在转储,我必须创建一种解决方案,该解决方案会在最新文件到达时解析JSON,然后将其加载到Snowflake Datawarehouse。可能有人请分享您的想法我们如何实现

4 个答案:

答案 0 :(得分:2)

有多种方法可以执行此操作,具体取决于您的需求。我建议创建一个事件来触发lambda函数。

https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

另一种选择是在文件到达s3并让ec2实例轮询队列并根据需要进行处理时创建SQS消息。

https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html https://boto3.amazonaws.com/v1/documentation/api/latest/guide/sqs-example-long-polling.html

edit:这是有关如何从s3创建事件和触发lambda函数的更详细的说明。文档由Snowflake提供

https://docs.snowflake.net/manuals/user-guide/data-load-snowpipe-rest-lambda.html

答案 1 :(得分:0)

查看Snowpipe,它使您可以在系统内完成此操作,(可能)更加容易。

答案 2 :(得分:0)

要考虑一些方面,例如批处理数据或流数据,是否要在数据或格式错误的情况下重试加载文件,还是要使其成为能够处理的通用过程?不同的文件格式/文件类型(csv / json)和阶段。 在我们的案例中,我们使用Python和Luigi为Snowflake负载构建了通用的s3,并使用SSIS实现了相同的功能,但仅适用于csv / txt文件。

答案 3 :(得分:0)

在我的情况下,我有一个python脚本,该脚本可通过boto获取有关存储桶的信息。

一旦检测到更改,便在SnowPipe上调用REST端点插入文件。

阶段:

  • 检测S3更改
  • 获取S3对象路径
  • 在S3中解析内容并转换为CSV(可以连接相同的存储桶或其他雪管)
  • 调用SnowPipe REST API

您需要什么:

  • 使用公共密钥创建用户
  • 使用AWS凭证在SnowFlake上创建舞台以访问S3
  • 使用用户角色在Snowflake上创建管道
  • 签署JWT

我还尝试过使用TOS BigData进行Talend工作。

希望有帮助。