增量加载 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 文件夹文件的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue 和重复数据删除增量 CSV 文件

通过火花数据框读取 S3 文件时,胶水书签不起作用

aws Glue / Redshift 的预过滤解决方案(在加载到 S3 之前)

使用清单从多个 s3 文件夹加载红移表

并行加载 S3 文件 Spark

仅将新文件从 S3 加载到 Redshift 的简单方法?