【问题标题】:How to get the GCS path of composer data folder如何获取composer数据文件夹的GCS路径
【发布时间】:2019-07-16 06:52:01
【问题描述】:

我需要将文件从 FTP 服务器复制到特定的 GCS 位置。 我正在使用 ftp_hook 将文件下载到 /data 文件夹中。 我需要将此文件移动到不同的 GCS 存储桶而不是 Composer GCS 存储桶。

我正在尝试使用 GoogleCloudStorageToGoogleCloudStorageOperator 运算符将文件从作曲家存储桶复制到所需的存储桶。 为此,我需要在 Airflow 任务中读取作曲家存储桶。我不想将其添加为自定义变量,因为我的作曲家本身是动态创建的。 那么如何获取我的data文件夹所在的composer bucket的信息呢?

【问题讨论】:

  • 不确定存储桶名称在哪里决定?你想从哪里读到它?您想手动输入还是自动输入?可以使用 GCS API 吗?
  • 我想以自动方式阅读。我可以使用 GCS API。但是使用 GCS API,我无法检查存储桶是否适合作曲家
  • 嘿,我刚刚更新了我的回答,我想它会对你有所帮助!

标签: airflow google-cloud-composer


【解决方案1】:

更新:

我刚刚发现(可能是新事物)您可以使用存储桶访问环境变量。这是在 Composer 中自动定义的。

COMPOSER_BUCKET = os.environ["GCS_BUCKET"]

原文:

我不能 100% 确定您是否想动态执行此操作(即,相同的 DAG 无需任何修改即可在其他 Composer 环境中工作),无论哪种方式,这都是我的想法:

  • (不动态) 您可以查看 Composer 在环境中点击使用的存储桶,它应该在“DAGs 文件夹”下(实际上是 DAGs 所在的文件夹,只需出/dags)

  • (动态) 因为您想要将文件从 Composer 复制到 GCS,您可以使用 FileToGoogleCloudStorageOperator 并使用映射到 Composer Bucket 的文件。请注意,本地存储和 Composer 存储桶相互映射,因此访问路径 home/airflow/gcs/data/file1 与访问路径 gs://<bucket>/data/file1 会“相同”。

  • (半动态)您可以使用Composer API 获取环境详细信息并解析存储桶。当然,您需要事先知道名称、位置和项目。

在这三个中,我想说使用 FileToGoogleCloudStorageOperator 的那个是最干净和最简单的。

【讨论】:

  • 是的,FileToGoogleCloudStorageOperator 是最简单的,我目前正在使用它。但是它将文件从映射磁盘上传到 gcs,与 GCSToGCS 相比,这很耗时。让我尝试使用 Composer API 来获取环境详细信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2011-05-08
  • 2010-10-14
相关资源
最近更新 更多