前段时间帮朋友看了一个airflow的问题,问题不难,主要对于新手第一次接触这个组件来说,会有点小坑。
1、问题现状
话不多说,下面是运行命令以及报错细节:
(1)运行的命令:pip install "apache-airflow==2.4.3"
(2)报错的细节:
Installing collected packages: sqlalchemy, apache-airflow Attempting uninstall: sqlalchemy Found existing installation: SQLAlchemy 2.0.19 Uninstalling SQLAlchemy-2.0.19: Successfully uninstalled SQLAlchemy-2.0.19 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. apache-superset 2.0.1 requires sqlalchemy!=1.3.21,<1.4,>=1.3.16, but you have sqlalchemy 1.4.49 which is incompatible. apache-superset 2.0.1 requires sqlparse==0.3.0, but you have sqlparse 0.4.4 which is incompatible. apache-superset 2.0.1 requires typing-extensions<4,>=3.10, but you have typing-extensions 4.7.1 which is incompatible. |
二、原因
【原因】:根据上面的日志显示,可以确认,airflow依赖的superset包冲突。
深度原因是:airflow包中有对应的superset包,该节点之前已经搭建了superset组件,是2.0.1版本的,因此发生冲突
三、解决方案
【解决方案】:
(1)方案一: 更换节点部署(无superset组件),按照步骤部署即可
缺点: 这种方式可以无法自己决定能否更换节点部署,一般都是架构规划好的
(2)方案二:使用docker容器或者anconda组件创建新环境 【推荐】
(3)方案三: 修改superset组件的版本,符合airflow的要求【不推荐】
缺点: 不推荐,这种方式影响极大,可能对其他组件造成影响,而且复杂
上面三种方式,我使用了“方案二”进行验证(anconda方式):
第一步:先安装anconda组件(因为我的节点已经有此组件,不在演示安装步骤,百度查找)
第二步: 创建环境
conda create --name airflow python=3.8
创建完成之后,可以使用如下命令进行查看:
conda info --envs
第三步:进入环境并执行安装命令(即上方报错问题)
pip install "apache-airflow==2.4.3"
显示如上图中框红线部分即可,代表superset版本冲突已解决!
第四步:继续后续的安装步骤即可