S3删除&HDFS到S3复制

时间:2018-08-06 08:09:46

标签: airflow

作为我的Spark 管道的一部分,我必须在EMR / S3上执行以下任务:

  1. 删除 :(递归)删除给定S3 bucket下的所有文件/目录
  2. 复制:将目录(子目录和文件)的内容复制到给定的S3 bucket

根据我目前的知识,Airflow不会为这些任务提供operator s / hook s。因此,我计划按以下方式实现它们:

  1. 删除:扩展S3Hook以添加在指定的aws s3 rm上执行S3 bucket的功能
  2. 复制:使用SSHExecuteOperator执行hadoop distcp

我的问题是:

  • 我认为我打算执行的任务是 primitive Airflow已经提供了这些功能吗?
  • 如果没有,是否有比我计划做的更好的方法?

我正在使用:

  • Airflow 1.9.0 [Python 3.6.6](一旦it is released将升级到Airflow 1.10
  • EMR 5.13.0

1 个答案:

答案 0 :(得分:1)

delete是一种基本操作,是,但不是hadoop distcp。要回答您的问题:

  1. 没有气流在s3挂钩上没有执行这些操作的功能。
  2. 在我看来,通过创建自己的插件来扩展s3_hook并使用ssh运算符执行distcp,是一种很好的方法。

不确定标准S3_Hook为什么不具有删除功能。可能是因为s3 provides an "eventually consistent" Consistency Model(可能不是原因,但还是要牢记在心)