GCP apache气流,如何从私有存储库安装Python依赖项

Posted

技术标签:

【中文标题】GCP apache气流,如何从私有存储库安装Python依赖项【英文标题】:GCP apache airflow, how to install Python dependency from private repository 【发布时间】:2019-10-22 11:48:49 【问题描述】:

对于我的数据提取项目,我选择了带有 GCP 作曲家和桶存储的 apacahe Airflow。

我在 Github 的仓库中有几个模块,我的 DAG 文件需要访问 现在我使用 BashOperator 来检查它是否有效:

#dag.py

dag = DAG(
    dag_id='my_example_DAG',
    start_date=datetime(2019, 10, 17, 8, 25),
    schedule_interval=timedelta(minutes=15),
    default_args=default_args,
)

t1 = BashOperator(
    task_id='example_task',
    bash_command='python /home/airflow/gcs/data/my_example_maindir/main.py ',
    dag=dag)
t1
#main.py

def run_main(path_name)
   #Reads YML file
   extractor_pool(yml_info)

def extractor_pool
    #do work

if __name__ == "__main__":
   test_path = Example/path/for/test.yml
   run_main(test_path)


它可以工作,它以 test_path 开头 main.py。但想使用函数 run_main 为任务解析正确的路径和正确的 YML 文件。

我试图在我的模块所在的存储桶中 sys.path.insert 目录,但我得到导入错误 目录:

我的 dags 文件的目录(从我的 git repo 克隆)= Buckets/europe-west1-eep-envxxxxxxx-bucket/dags

我的脚本/包的目录 = Buckets/europe-west1-eep-envxxxxxxx-bucket/data

#dag.py

import sys
sys.path.insert(0, "/home/airflow/gcs/data/Example/")
from Example import main

dag = DAG(
    dag_id='task_1_dag',
    start_date=datetime(2019, 10, 13),
    schedule_interval=timedelta(minutes=10),
    default_args=default_args,
)

t1 = PythonOperator(
   task_id='task_1',
   provide_context=True,
   python_callable=main.run_main,
   op_args='path_name': "project_output_0184_Storgaten_33",
   dag=dag
    )

t1



这会导致“找不到模块”错误,并且不起作用。

我在 GCP 中做了一些阅读,发现了这个:

从私有存储库安装 Python 依赖项: https://cloud.google.com/composer/docs/how-to/using/installing-python-dependencies

也就是说我需要把它放在目录路径 /config/pip/ 示例:gs://us-central1-b1-6efannnn-bucket/config/pip/pip.conf

但是在我的 GCP 存储桶中,我没有名为 config 的目录。 当我创建存储桶和环境时,我试图追踪我的步骤,但可以找出我做错了什么

【问题讨论】:

您是否尝试手动创建目录并将文件放入其中? 【参考方案1】:

GCS 没有真正的文件夹或目录概念,您实际上拥有的是一系列名称​​可能包含斜杠并呈现目录外观的 blob。

要求您将其放入目录中,说明有点不清楚,但您真正想要做的是创建一个文件并为其指定前缀config/pip/pip.conf

使用gsutil,您可以执行以下操作:

gsutil cp my-local-pip.conf gs://[DESTINATION_BUCKET_NAME]/config/pip/pip.conf

【讨论】:

谢谢你,我正在考虑添加它,但觉得不可能那么容易。

以上是关于GCP apache气流,如何从私有存储库安装Python依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes 中部署的私有存储库 Airflow 的 image_pull_secrets 错误

气流添加谷歌云连接

气流 mysql 到 gcp Dag 错误

如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)

如何使用apache气流调度谷歌云bigquery存储过程

如何从 GCP 存储桶中读取 Apache Beam 中的多个文件