气流预言机挂钩的模块错误



我正在尝试在airflow上建立Oracle数据库连接。我得到这个错误:

ModuleNotFoundError:使用时没有名为"airflow.provideres.oracle.hooks.oracle"的模块

我的dag文件的一部分:

from airflow.decorators import task
from airflow.providers.oracle.hooks.oracle import OracleHook
def exe_query_oracle_hook():
hook = OracleHook(oracle_conn_id="oracle_conn")
df = hook.get_pandas_df(sql='SELECT * FROM TABLE')
print(df.to_string())

我试着安装pip install apache-airflow-providers-oracle,大多数都是必需的,我的当前版本是2.1.0。我还遵循了文档:气流建筑自定义图像。这是我的Dockerfile

FROM apache/airflow:2.1.0
ARG ORACLE_VERSION=11.2.0.4.0
ARG ORACLE_SHORT_VER=11204
ENV CLIENT_ZIP=instantclient-basiclite-linux.x64-${ORACLE_VERSION}.zip
ENV SDK_ZIP=instantclient-sdk-linux.x64-${ORACLE_VERSION}.zip
ENV ORACLE_HOME=/opt/oracle
ENV TNS_ADMIN ${ORACLE_HOME}/network/admin
WORKDIR ${ORACLE_HOME}
USER root
RUN apt-get update 
&& apt-get -yq install unzip curl 
&& apt-get clean
COPY dockerfiles/${CLIENT_ZIP} ${ORACLE_HOME}/${CLIENT_ZIP}
COPY dockerfiles/${SDK_ZIP} ${ORACLE_HOME}/${SDK_ZIP}
RUN unzip ${ORACLE_HOME}/${CLIENT_ZIP} && unzip ${ORACLE_HOME}/${SDK_ZIP} 
&& rm -f *.zip
VOLUME ["${TNS_ADMIN}"]
RUN apt-get -yq install libaio1 
&& apt-get autoremove 
&& apt-get clean 
&& echo ${ORACLE_HOME} > /etc/ld.so.conf.d/oracle.conf 
&& mkdir -p ${TNS_ADMIN} 
&& ldconfig 
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN pip install --no-cache-dir apache-airflow-providers-oracle
USER 1001

不知道还能尝试什么,有人能提供一些帮助吗?谢谢

您必须以气流用户的身份运行pip-install,目前您以root用户身份运行它。

...
USER 1001
RUN pip install --no-cache-dir apache-airflow-providers-oracle

最新更新