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 错误