我正在尝试在 Docker 上使用 Airflow 。 dags 目录中的 my_python.py 文件,如:
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta
import argparse
import psycopg2
import csv
import os
import sys
from datetime import datetime
from google.cloud import bigquery
from google.oauth2 import service_account
def postgresql_database_connection(table_name, data_file):
...
def write_to_bigquery(dataset_name, table_name, data_file):
...
dag = DAG('my_python',
default_args=default_args,
schedule_interval='00-59/30 * * * *',
catchup=False,
max_active_runs=1)
task1 = PythonOperator(
task_id='table_database_connection',
python_callable=postgresql_database_connection,
op_args=[TABLE_NAME,DATA_FILE],
dag=dag)
task2 = PythonOperator(
task_id='table_write_to_bigquery',
python_callable=write_to_bigquery,
op_args=[DATASET_NAME,TABLE_NAME,DATA_FILE,args.env],
dag=dag)
task1 >> task2
我的 .dockerfile 像:
FROM python:3.7
ARG AIRFLOW_USER_HOME=/usr/local/airflow
ENV AIRFLOW_HOME=${AIRFLOW_USER_HOME}
RUN ...
&& pip install apache-airflow==2.0.0 \
&& pip install psycopg2-binary \
&& pip install google-cloud \
&& pip install google-oauth
EXPOSE 8080 8793
USER airflow
WORKDIR ${AIRFLOW_USER_HOME}
文件夹路径:
-标签: --my_python.py
- Airflow 测试.Dockerfile
-docker-compose.yaml
我错在哪里?是 python 还是 airflow 版本问题,还是我的 dockerfile 问题?
最佳答案
该错误与您的环境中缺少包有关。
如 @neilharia7 所述,您可以使用 pip install apache-airflow-providers-google[amazon]
。
关于python - Docker 上的 Airflow 出现错误 "ModuleNotFoundError: No module named ' google' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66169275/