在s3存储桶中,每天都有新的JSON文件正在转储,我必须创建一种解决方案,该解决方案会在最新文件到达时解析JSON,然后将其加载到Snowflake Datawarehouse。可能有人请分享您的想法我们如何实现
答案 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端点插入文件。
阶段:
您需要什么:
我还尝试过使用TOS BigData进行Talend工作。
希望有帮助。