Google Cloud Storage 到 Google Drive 传输算子¶
Google 有两个用于存储数据的服务。Google Cloud Storage 用于存储来自各种应用程序的大型数据。Google Drive 用于存储日常使用的数据,包括文档和照片。Google Cloud Storage 与 Google Cloud 服务紧密集成。Google Drive 具有内置机制,可促进团队协作,例如文档编辑器、文件共享机制。
先决任务¶
要使用这些算子,您必须执行以下操作
使用 Cloud 控制台 选择或创建 Cloud Platform 项目。
为您的项目启用结算,如 Google Cloud 文档 中所述。
启用 API,如 Cloud 控制台文档 中所述。
通过 pip 安装 API 库。
pip install 'apache-airflow[google]'有关 安装 的详细信息,请参阅。
算子¶
使用 GCSToGoogleDriveOperator
运算符在 Google 存储和 Google 云端硬盘之间传输文件。
你可以将 Jinja 模板 与 source_bucket
, source_object
, destination_object
, impersonation_chain
参数一起使用,这些参数允许你动态确定值。
复制单个文件¶
以下运算符将复制单个文件。
copy_single_file = GCSToGoogleDriveOperator(
task_id="copy_single_file",
gcp_conn_id=CONNECTION_ID,
source_bucket=BUCKET_NAME,
source_object=f"{TMP_PATH}/{FILE_NAME}",
destination_object=f"{WORK_DIR}/copied_{FILE_NAME}",
)
复制到现有文件夹¶
以下运算符将单个文件复制到具有指定 ID 的现有文件夹中。
copy_single_file_into_folder = GCSToGoogleDriveOperator(
task_id="copy_single_file_into_folder",
gcp_conn_id=CONNECTION_ID,
source_bucket=BUCKET_NAME,
source_object=f"{TMP_PATH}/{FILE_NAME}",
destination_object=f"{WORK_DIR}/copied_{FILE_NAME}",
destination_folder_id=FOLDER_ID,
)
复制多个文件¶
以下运算符将复制所有多个文件(即使用通配符)。
copy_files = GCSToGoogleDriveOperator(
task_id="copy_files",
gcp_conn_id=CONNECTION_ID,
source_bucket=BUCKET_NAME,
source_object=f"{TMP_PATH}/*",
destination_object=f"{WORK_DIR}/",
)
移动文件¶
使用 move_object
参数允许你移动文件。将文件复制到 Google 云端硬盘后,将删除存储桶中的原始文件。
move_files = GCSToGoogleDriveOperator(
task_id="move_files",
gcp_conn_id=CONNECTION_ID,
source_bucket=BUCKET_NAME,
source_object=f"{TMP_PATH}/*.txt",
destination_object=f"{WORK_DIR}/",
move_object=True,
)