让 Glue 在作业后删除源数据

Jen*_*and 4 etl bigdata aws-glue

AWS Glue 非常适合将数据从原始形式转换为您需要的任何格式,并保持源数据集和目标数据集同步。

但是,我有一个场景,其中数据从不受信任的外部源进入“着陆区域”存储桶,并且第一个 ETL 步骤需要是数据验证步骤,仅允许有效数据传递到数据湖,而无效数据被移至隔离桶进行人工检查。

无效数据包括:

  • 错误的文件格式/编码
  • 无法解析的内容
  • 不匹配的模式
  • 甚至对数据本身进行一些健全性检查

“着陆区域”存储桶不是数据湖的一部分,它只是传入数据的临时死角,因此我需要验证作业在将文件移动到数据湖和/或检疫桶。

这可以用胶水实现吗?如果数据从源存储桶中删除,Glue 最终是否会在后续更新中将其删除到下游?

我是否需要使用不同的工具(例如 StreamSets、NiFi 或带有 AWS Batch 的 Step Functions)来执行此验证步骤,并且仅在数据进入数据湖后才使用 Glue?

(我知道我可以在存储桶本身上设置生命周期规则,以便在一定时间(例如 24 小时)后删除数据,但理论上这可以在 Glue 处理数据之前删除数据,例如,如果 Glue 作业出现问题)

Ste*_*fan 7

请参阅文档中的 purge_s3_path :

glueContext.purge_s3_path(s3_path, options={}, transformation_ctx="")
Run Code Online (Sandbox Code Playgroud)

以递归方式从指定的 Amazon S3 路径中删除文件。

另外,请确保您AWSGlueServiceRoles3:DeleteObject权限