python - 如何使用 Airflow 将 S3 中的 HDFS 文件作为 CSV 文件导出到本地机器
问题描述
我想创建一个气流作业以将存储在 S3 中的 hdfs 文件导出到本地机器。哪个气流算子可用于此
解决方案
没有特定的 Airflow 运营商可以完全满足您的需求,但是就我而言,我看到了两种可能解决此问题的选项(方式):
- 一种基本方法,使用AWS CLI util,在 Airflow BashOperator中调用cp命令,该命令利用 Bash 工具将目标 S3 文件复制到本地目的地,此方法已在此 Stack线程中讨论过,但场景略有不同。
- 除了 Operators,Airflow 还包含一个称为Hooks的灵活机制,它通过实现与外部平台的通信通道来广泛扩展 Operators 的功能。有一个S3_hook模块,旨在提供 AWS S3 相关操作,最初基于 AWS
boto3
库。但是,您可能不会通过包含列表找到合适的方法,您可能会对此感兴趣。但是最近我发现了S3_to_hive_operator,在检查了整个结构和源代码后,我发现execute()
了触发boto3
download_fileobj( )方法,将文件从 S3 存储桶下载到本地驱动器。因此,您可以采用自定义 Airflow Operatorexecute()
,在特定S3_hook
方法中为其提供部分修改的功能。
希望对您的研究有所帮助。
推荐阅读
- javascript - 下载 csv 文件在 Safari 浏览器中不起作用
- c++ - 如何将 SQLite 数据库添加到 Qt 项目中的资源
- react-native - React Native Linking Listener?
- json - 面临在 Angular HttpClient 中访问 json() 的问题。寻找替代品
- javascript - Unexpected token "<" when importing from third party library into React project
- python - My python code is saying things after an if which isn’t answered
- oracle - Suitable Primary key type in oracle
- python - K means implementation with Pytorch
- vue.js - Load data from API into mdbootstrap datatable (vue.js, axios)
- html - Is the same body sent to the server using forms in Angular?