增量加载 s3 文件夹文件
Posted
技术标签:
【中文标题】增量加载 s3 文件夹文件【英文标题】:Incremenrtal load s3 folder files 【发布时间】:2018-09-27 21:01:02 【问题描述】:使用 python 在 s3 文件夹文件中应用增量负载的简单方法是什么? 日期取自“filename_180828_152153”,如下所示!
我已尝试将所有文件名和日期插入表中。然后将最大文件名与表中的日期进行比较。
但它需要更多时间,就像加载太多时间!
请指教?
提前谢谢。
【问题讨论】:
需要进一步详细说明您的 S3 存储桶以及文件的增长方式。每天生成多少文件?文件本身是否会不断增长,或者一旦上传就永远不会改变? 它是自动加载每天 3000 个文件添加到文件夹中......每天添加到同一文件夹的文件是要加载的问题。 【参考方案1】:您想要的解决方案是由 S3 事件通知触发的 Lambda 函数。 https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html
这个想法是,每当一个新对象上传到您的 S3 时,它都会触发您定义的这个 Lambda 函数(例如,执行您的 ELT、清理等...)这更像是一个“推送”风格的工作流程,所以您无需担心比较。
S3 事件通知允许您定义过滤对象名称前缀和/或后缀的规则,并向它们添加事件触发器。 https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
【讨论】:
一个 lambda 可以检查传入文件的名称,并将其写入一个众所周知的存储桶。如果多个文件并行上传并且几乎同时完成,这可能会并且很可能会出现数据竞争问题。 好点!然后我认为您始终可以将偶数触发器指向 SQS 队列。并制定一个 cloudwatch 事件规则,以使用 lambda 定期从该队列中拉取。这样您就可以更好地控制触发 lambda 的时间。以上是关于增量加载 s3 文件夹文件的主要内容,如果未能解决你的问题,请参考以下文章