我已经设置了一个 airflow 工作流,将一些文件从 s3 提取到 Google Cloud 存储,然后运行 sql 查询工作流以在 Big Query 上创建新表。在工作流程结束时,我需要将最后一个 Big Query 表的输出推送到 Google Cloud Storage,然后从那里推送到 S3。
我使用 BigQueryToCloudStorageOperator python 运算符破解了将 Big Query 表传输到 Google Cloud Storage 的过程,没有任何问题。然而,从谷歌云存储到 S3 的转移似乎是一条不太受欢迎的路线,我一直无法找到可以在我的 Airflow 工作流程中自动化的解决方案。
我知道 rsync 作为 gsutil 的一部分出现并且已经开始工作(参见帖子 Exporting data from Google Cloud Storage to Amazon S3 )但我无法将其添加到我的工作流程。
我有一个在计算引擎实例上运行的码头化 Airflow 容器。
非常感谢帮助解决这个问题。
非常感谢!
请您参考如下方法:
因此我们还使用rsync 在 S3 和 GCS 之间移动数据,
您首先需要让 bash 脚本正常工作,例如 gsutil -m rsync -d -r gs://bucket/key s3://bucket/key
对于 s3,您还需要提供 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 作为环境变量。
然后定义您的 BashOperator 并将其放入您的 DAG 文件中
rsync_yesterday = BashOperator(task_id='rsync_task_' + table,
bash_command='Your rsync script',
dag=dag)
