Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面演示了如何使用 Google 代码从其他服务转移数据 DAG 中的 Transfer Operator。
Google 转移运算符简介
Google 传输运算符是一组 Airflow 运算符,可用于将数据从其他服务拉取到 Google Cloud。
本指南介绍了适用于 Azure FileShare Storage 和 Amazon S3 且可与 Cloud Storage 搭配使用的运算符。还有很多其他的中转运营商 Google Cloud 中的服务以及 Google Cloud
Amazon S3 到 Cloud Storage
本部分演示如何将数据从 Amazon S3 同步到 Cloud Storage 存储分区。
安装 Amazon 提供方软件包
apache-airflow-providers-amazon
软件包包含连接
与 Amazon S3 交互的功能类型。
在命令行中安装此 PyPI 软件包
环境
配置与 Amazon S3 的连接
Amazon 提供程序软件包为 Amazon S3 提供了一种连接类型。您可以创建此类连接。您的环境中已设置名为 google_cloud_default
的 Cloud Storage 连接。
通过以下方式设置与 Amazon S3 的连接:
- 在 Airflow 界面中,依次选择管理 > 连接。
- 创建新连接。
- 选择
Amazon S3
作为连接类型。 - 以下示例使用名为
aws_s3
的连接。您可以使用此名称,也可以为连接使用任何其他名称。 - 按照 Airflow 文档中的说明指定连接参数, Amazon Web Services 连接。 例如,如需使用 AWS 访问密钥设置连接,您需要为自己的 AWS 账号生成访问密钥,然后将 AWS 访问密钥 ID 作为登录凭据,将 AWS 私有访问密钥作为连接密码。
从 Amazon S3 转移数据
如果您想稍后在其他 DAG 或任务中对同步的数据进行操作,请将其拉取到环境存储桶的 /data
文件夹中。此文件夹是
同步到其他 Airflow 工作器,这样 DAG 中的任务
可以对其执行操作
以下示例 DAG 会执行以下操作:
- 同步 S3 存储桶中
/data-for-gcs
目录的内容 复制到环境存储桶中的/data/from-s3/data-for-gcs/
文件夹中。 - 等待两分钟,以便数据同步到以下项目中的所有 Airflow 工作器 您的环境
- 使用
ls
命令输出此目录中的文件列表。将 处理此任务的其他 Airflow 操作。
import datetime
import airflow
from airflow.providers.google.cloud.transfers.s3_to_gcs import S3ToGCSOperator
from airflow.operators.bash_operator import BashOperator
with airflow.DAG(
'composer_sample_aws_to_gcs',
start_date=datetime.datetime(2022, 1, 1),
schedule_interval=None,
) as dag:
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f2312-bucket/data/from-s3/')
sleep_2min = BashOperator(
task_id='sleep_2min',
bash_command='sleep 2m')
print_dir_files = BashOperator(
task_id='print_dir_files',
bash_command='ls /home/airflow/gcs/data/from-s3/data-for-gcs/')
transfer_dir_from_s3 >> sleep_2min >> print_dir_files
Azure FileShare 到 Cloud Storage
本部分演示了如何将数据从 Azure FileShare 同步到 Cloud Storage 存储桶。
安装 Microsoft Azure 提供程序软件包
apache-airflow-providers-microsoft-azure
软件包包含连接
与 Microsoft Azure 交互的功能类型和功能。
在您的环境中安装此 PyPI 软件包。
配置与 Azure 文件共享的连接
Microsoft Azure 提供方软件包提供 Azure 文件的连接类型
共享。您可以创建此类连接。通过
名为“google_cloud_default
”的 Cloud Storage 已在
您的环境
通过以下方式设置与 Azure FileShare 的连接:
- 在 Airflow 界面中,前往管理 > 关联。
- 创建新连接。
- 选择
Azure FileShare
作为连接类型。 - 以下示例使用名为
azure_fileshare
的连接。您可以使用 该名称或任何其他连接名称。 - 按照 Airflow 文档中的说明指定连接参数, Microsoft Azure 文件共享连接。 例如,您可以为存储账号指定连接字符串 访问密钥。
从 Azure 文件共享传输数据
如果您想稍后在另一个 DAG 或任务中对已同步的数据执行操作,请执行以下操作:
将其拉取到环境存储桶的 /data
文件夹中。此文件夹会同步到其他 Airflow 工作器,以便 DAG 中的任务可以对其进行操作。
以下 DAG 会执行以下操作:
以下示例 DAG 会执行以下操作:
- 从 Azure 文件共享同步
/data-for-gcs
目录的内容 复制到环境存储桶中的/data/from-azure
文件夹中。 - 等待两分钟,以便数据同步到以下项目中的所有 Airflow 工作器 您的环境
- 使用
ls
命令输出此目录中的文件列表。将此任务替换为适用于您数据的其他 Airflow 操作符。
import datetime
import airflow
from airflow.providers.google.cloud.transfers.azure_fileshare_to_gcs import AzureFileShareToGCSOperator
from airflow.operators.bash_operator import BashOperator
with airflow.DAG(
'composer_sample_azure_to_gcs',
start_date=datetime.datetime(2022, 1, 1),
schedule_interval=None,
) as dag:
transfer_dir_from_azure = AzureFileShareToGCSOperator(
task_id='transfer_dir_from_azure',
azure_fileshare_conn_id='azure_fileshare',
share_name='example-file-share',
directory_name='data-for-gcs',
dest_gcs='gs://us-central1-example-environ-361f2312-bucket/data/from-azure/')
sleep_2min = BashOperator(
task_id='sleep_2min',
bash_command='sleep 2m')
print_dir_files = BashOperator(
task_id='print_dir_files',
bash_command='ls /home/airflow/gcs/data/from-azure/')
transfer_dir_from_azure >> sleep_2min >> print_dir_files