需要在Airflow V2中使用Pandas:Pandas对Apache气流〔Pandas〕

sqougxex  于 2023-02-11  发布在  Apache
关注(0)|答案(2)|浏览(153)

我需要在气流作业中使用Pandas。尽管我是一个经验丰富的程序员,但我对Python相对来说还是一个新手。我想知道在我的requirements.txt中,我是从 PyPI 还是apache-airflow[pandas]安装pandas
此外,我不完全确定提供程序apache-airflow[pandas]的功能,以及 pip 如何解决它(看起来它不在 PyPi 中)。
提前感谢您的回答。

  • 我尝试在PyPI中搜索apache-airflow[pandas]
  • 我还尝试在SO中搜索相关问题
zujrkrfu

zujrkrfu1#

apache-airflow[pandas]仅安装pandas>=0.17.1:www.example.com。对于上下文,这是最初添加它的PR:https://github.com/apache/airflow/blob/0d2555b318d0eb4ed5f2d410eccf20e26ad004ad/setup.py#L308-L310. For context, this was the PR that originally added it: https://github.com/apache/airflow/pull/17575 .
由于>=0.17.1的范围很广,我建议在requirements.txt中将Pandas限制为一个更具体的版本,这样可以让您更好地控制Pandas版本,而不是像Airflow那样限制为大量的Pandas版本。

8zzbczxx

8zzbczxx2#

我建议按照文档中的说明安装带有约束的气流:

pip install "apache-airflow[pandas]==2.5.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.5.1/constraints-3.7.txt"

这将保证稳定安装的气流没有冲突。2气流也更新约束时,释放是削减,因此当你升级气流,你会得到最新的可能版本,"同意"与所有其他气流依赖。
例如:
Airflow 2.5.1 with Python 3.7版本为:

pandas==1.3.5

Airflow 2.5.1 with Python 3.9版本为:

pandas==1.5.2

就个人而言,我不建议覆盖约束中的版本,因为这会带来生产环境不稳定/不一致的风险(除非您实现了自己的机制来生成约束)。如果您有一个特定的任务需要其他版本的库(Pandas或其他)那么我建议使用PythonVirtualenvOperator,DockerOperator或允许您为此任务设置特定库版本的任何其他替代方法。这也使DAG作者可以自由设置所需的任何库版本,而不依赖于共享相同Airflow示例和需要的其他团队同一个库的其他版本,或者甚至是同一个团队,但另一个项目需要不同的版本(请将其视为与在IDE中管理虚拟环境相同的方式)。
关于你提到的apache-airflow[pandas]的问题,注意这是额外的依赖,不是你提到的Airflow提供者,有它的原因是因为Airflow过去对Pandas有依赖(作为Airflow核心的一部分)然而,Pandas是沉重的图书馆,并不是每个人都需要它,因此将其移动到可选依赖项是有意义的。这样的话,只有那些需要在他们的气流环境中有Pandas的用户才会安装它。

相关问题