【问题标题】:copy file from GCS to Google Drive through Airflow通过 Airflow 将文件从 GCS 复制到 Google Drive
【发布时间】:2020-12-16 03:48:14
【问题描述】:

我想实例化一个任务(通过气流),它将谷歌云存储上的存储桶中的文件复制到驱动器。

我使用位于以下位置的专用运算符:

from airflow.contrib.operators.gcs_to_gdrive_operator import GcsToGDriveOperator

然后是运算符:

copy_files = GcsToGDriveOperator(
        task_id="copy_files",
        source_bucket=GCS_BUCKET_ID,
        source_object='{}/{}/forecasted/*'.format(COUNTRY_TRIGRAM, PRED_START_RANGE),
        destination_object="content/drive/Shared Drives/FORECAST_TEST",
        gcp_conn_id="airflow_service_account_conn_w_drive"
    )

任务成功,但不要将文件复制到“目标对象”中,这是我不确定要放入什么的部分。

【问题讨论】:

    标签: python python-3.x google-cloud-platform airflow


    【解决方案1】:

    查看 Airflow GcsToGDriveOperator 源代码,我假设 Airflow 利用 gcs_hook.download() 方法从 GCS 下载文件并 gdrive_hook.upload_file() 将这些对象上传到目标 Gdrive 位置。

    如上所述,gcs_hook.download() 方法记录了每个动作为成功的操作结果:

    self.log.info('File downloaded to %s', filename)
    

    同样,gdrive_hook.upload_file() 将每个文件上传迭代写入日志消息:

    self.log.info("File %s uploaded to gdrive://%s.", local_location, remote_location)
    

    即使任务成功,我相信您也可以在特定任务中捕获 Airflow logs 中的上述事件,查找源自 GcsToGDriveOperator() 定义的实际源和目标位置路径。

    您甚至可以考虑连接到 GKE 集群并启动 kubectl 命令行工具的 Airflow 工作人员日志检查:

    kubectl logs deployment/airflow-worker -n $(kubectl get ns| grep composer*| awk '{print $1}') -c airflow-worker | grep 'Executing copy'
    

    【讨论】:

    • 我可以跟踪气流的日志,表明我的文件“/tmp/tmpwj__bkqs”已上传到 gdrive://>“content/drive/Shared Drives/FORECAST_TEST”/000000。这确实是我在目标对象中指定的路径。但我的问题不是跟踪我的文件在哪里,而是将文件发送到合适的位置,以便指定正确的路径,我找不到我想要找到他的复制文件,这意味着我没有指定路径以正确的方式,所以我寻找正确的“语法”方式来指定它
    • thread 可能与您相关。这是否有助于您获得正确的路径语法?
    • 根据这个线程我认为我的路径已正确定义但它仍然不起作用,我认为 GcsToGDriveOperator 指向气流驱动器而不是我的本地气流但我没有发现任何说法说“这个是我的驱动器”
    • GcsToGDriveOperator实际上是用来从GCS bucket而不是本地驱动器获取文件的。
    • 哦,我明白了.. 所以我走错了路,您知道另一种传输到本地驱动器的方法吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2023-02-10
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多