使胶水在作业后删除源数据

时间:2020-02-21 12:39:43

标签: bigdata etl aws-glue

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

但是,我有一个场景,数据从不受信任的外部来源进入“着陆区”存储区,并且ETL的第一步需要是数据验证步骤,该步骤仅允许有效数据传递到数据湖,而非-将有效数据移至隔离区进行手动检查。

无效数据包括:

  • 错误的文件格式/编码
  • 不可分割的内容
  • 不匹配的架构
  • 甚至对数据本身进行完整性检查

“着陆区”存储区不是数据湖的一部分,它只是传入数据的临时死点,因此,一旦将文件移到湖中后,我需要验证工作才能从该存储区中删除文件和/或隔离区。

胶水有可能吗?如果数据已从源存储桶中删除,那么Glue最终不会在后续更新中将其从下游删除吗?

此验证步骤是否需要其他工具(例如StreamSets,NiFi或带有AWS Batch的Step Functions),并且仅在数据进入湖中时才使用Glue?

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

2 个答案:

答案 0 :(得分:0)

boto3随附了您的粘合环境。在通过胶水处理完数据后,最好使用boto3 s3客户端/资源删除登录文件

答案 1 :(得分:0)

请参阅 docs 中的 purge_s3_path:

glueContext.purge_s3_path(s3_path, options={}, transformation_ctx="")
<块引用>

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

另外,请确保您的 AWSGlueServiceRole 具有 s3:DeleteObject 权限