首页 > 解决方案 > 如何使用 Airflow 将 S3 中的 HDFS 文件作为 CSV 文件导出到本地机器

问题描述

我想创建一个气流作业以将存储在 S3 中的 hdfs 文件导出到本地机器。哪个气流算子可用于此

标签: pythonamazon-web-servicesamazon-s3hdfsairflow

解决方案


没有特定的 Airflow 运营商可以完全满足您的需求,但是就我而言,我看到了两种可能解决此问题的选项(方式):

  1. 一种基本方法,使用AWS CLI util,在 Airflow BashOperator中调用cp命令,该命令利用 Bash 工具将目标 S3 文件复制到本地目的地,此方法已在此 Stack线程中讨论过,但场景略有不同。
  2. 除了 Operators,Airflow 还包含一个称为Hooks的灵活机制,它通过实现与外部平台的通信通道来广泛扩展 Operators 的功能。有一个S3_hook模块,旨在提供 AWS S3 相关操作,最初基于 AWSboto3库。但是,您可能不会通过包含列表找到合适的方法,您可能会对此感兴趣。但是最近我发现了S3_to_hive_operator,在检查了整个结构和代码后,我发现execute()了触发boto3 download_fileobj( )方法,将文件从 S3 存储桶下载到本地驱动器。因此,您可以采用自定义 Airflow Operatorexecute(),在特定S3_hook方法中为其提供部分修改的功能。

希望对您的研究有所帮助。


推荐阅读