airflow - 无法使用 JdbcOperator 气流
问题描述
我正在尝试使用 JdbcOperator 连接到配置单元表。我的代码如下:
import datetime as dt
from datetime import timedelta
import airflow
from airflow.models import DAG
from airflow.operators.jdbc_operator.JdbcOperator import JdbcOperator
args = {
'owner': 'Airflow',
'start_date': dt.datetime(2020, 3, 24),
'retries': 1,
'retry_delay': dt.timedelta(minutes=5),
}
dag_hive = DAG(dag_id="import_hive",default_args=args, schedule_interval= " 0 * * * *",dagrun_timeout=timedelta(minutes=60))
hql_query = """USE testdb;
CREATE TABLE airflow-test-table LIKE testtable;"""
hive_task = JdbcOperator(sql = hql_query, task_id="hive_script_task", jdbc_conn_id="hive_conn_default",dag=dag_hive)
hive_task
我收到错误
ModuleNotFoundError:没有名为“airflow.operators.jdbc_operator.JdbcOperator”的模块;'airflow.operators.jdbc_operator' 不是一个包
我已经交叉检查了 sitepackages 文件夹中的包,它可用。无法弄清楚为什么我会收到此错误。
解决方案
通过运行以下命令安装使用 JDBC 运算符的依赖项:
pip install 'apache-airflow[jdbc]'
然后JdbcOperator
像@mk_sta 提到的那样导入你的DAG文件,如下所示:
from airflow.operators.jdbc_operator import JdbcOperator
推荐阅读
- swift - 观察者沟通模式
- javascript - 如何在 Javascript 中返回类之外的 Promise 值
- java - Java:Sqlexception:位置不支持的 SQL92 令牌:178
- java - 尝试使用 Media Player 在 Android java 应用程序中播放 mp3 时出错
- maven - 即使詹金斯构建成功,频道停止错误
- bluetooth - 如何禁用 BlueZ 缓存?
- sql - 带有分组的标量子查询需要优化
- javascript - 如何在函数外部使用函数的声明变量但将它们的值保留在 javascript 中?
- reactjs - React-select-async-paginate 选项异步函数使通用
- amazon-web-services - 通过 Cloudformation 创建 SQS 队列及其访问策略时出错