1

我正在使用气流 2.0。我正在尝试使用 mac 上的 docker 容器连接到 redshift。

这是我的 dag.py:

from airflow import DAG
from datetime import datetime,timedelta


from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator,BranchPythonOperator
from airflow.providers.jdbc.hooks.jdbc import JdbcHook



#Creating JDBC connection using Conn ID
JdbcConn = JdbcHook(jdbc_conn_id='Redshift_conn')
def getconnection():
    JdbcConn.get_connection('Redshift')
    print("connected")

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': airflow.utils.dates.days_ago(2),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

with DAG(
    dag_id="redshift",default_args=default_args ,schedule_interval="@daily",
    catchup=False) as dag:

    t1 = PythonOperator(
    task_id='getconnection',
    python_callable=getconnection
)

这是连接的定义 在此处输入图像描述

Airflow UI 显示此错误,我不知道如何摆脱它。

损坏的 DAG:[/opt/airflow/dags/redshift.py] Traceback(最近一次调用最后一次):文件“”,第 219 行,在 _call_with_frames_removed 文件“/opt/airflow/dags/redshift.py”,第 7 行,在从airflow.providers.jdbc.hooks.jdbc 导入JdbcHook ModuleNotFoundError:没有名为“airflow.providers.jdbc”的模块

任何帮助将不胜感激!!

4

1 回答 1

0

在 Airflow 2.0 中,不属于 Airflow 核心调度系统的所有功能都被移动到单独的 Python 包中。Airflow 称它们为提供程序包

JDBC 功能由apache-airflow-providers-jdbc提供程序包提供。根据错误消息,您的系统上似乎未安装此软件包。安装此软件包的方法之一是

pip install apache-airflow-providers-jdbc
于 2021-04-01T18:35:08.660 回答