Airflow 数据库迁移作业失败
Airflow database migration job is failing
我正在尝试在我们的 aws 环境中的 kubernetes 集群上部署气流。我们正在使用为此任务提供的官方 HELM chart airflow。
当开始部署 migrateDatabaseJob 时,但我可以看到它很快就失败了,我想这个问题只能由气流源代码中的错误引起:
[2022-03-25 09:27:17,567] {cli_action_loggers.py:105} WARNING - Failed to log action with (psycopg2.errors.UndefinedTable) relation "log" does not exist
LINE 1: INSERT INTO log (dttm, dag_id, task_id, event, execution_dat...
^
[SQL: INSERT INTO log (dttm, dag_id, task_id, event, execution_date, owner, extra) VALUES (%(dttm)s, %(dag_id)s, %(task_id)s, %(event)s, %(execution_date)s, %(owner)s, %(extra)s) RETURNING log.id]
[parameters: {'dttm': datetime.datetime(2022, 3, 25, 9, 27, 17, 506252, tzinfo=Timezone('UTC')), 'dag_id': None, 'task_id': None, 'event': 'cli_upgradedb', 'execution_date': None, 'owner': 'airflow', 'extra': '{"host_name": "airflow-run-airflow-migrations-x7t6v", "full_command": "[\'/home/airflow/.local/bin/airflow\', \'db\', \'upgrade\']"}'}]
(Background on this error at: http://sqlalche.me/e/13/f405)
DB: postgresql://<db>/airflow?sslmode=prefer
[2022-03-25 09:27:18,510] {db.py:919} INFO - Creating tables
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
/home/airflow/.local/lib/python3.9/site-packages/azure/storage/common/_connection.py:82 SyntaxWarning: "is" with a literal. Did you mean "=="?
但也可能是我们要安装到 airflow 中的自定义依赖项存在一些问题 docker 图片:
FROM apache/airflow:2.2.4-python3.9
USER root
RUN apt-get update \
&& apt-get install build-essential -y \
&& apt-get install unixodbc-dev -y \
&& apt-get install libkrb5-dev -y
USER airflow
RUN pip install pipenv
COPY Pipfile /
RUN pipenv install --system
有人能给我指出正确的方向吗,我目前对这个问题很迷茫,因为这似乎不是 HELM 图表的配置问题。与我们的外部 Postgres 数据库的连接似乎可以正常工作。这似乎是气流源代码本身的问题。
对于所有遇到同样问题的人:Airflow HELM 图表似乎只适用于标准标签,例如2.2.4
而不是 2.2.4-python3.9
。这意味着您必须为 运行 您的 DAG 使用 python3.7
(由标准标签使用)。
所选答案错误。 Helm chart 对 -python 图像也有类似的作用(在此处添加此内容以免答案误导 passers-by)。
我正在尝试在我们的 aws 环境中的 kubernetes 集群上部署气流。我们正在使用为此任务提供的官方 HELM chart airflow。
当开始部署 migrateDatabaseJob 时,但我可以看到它很快就失败了,我想这个问题只能由气流源代码中的错误引起:
[2022-03-25 09:27:17,567] {cli_action_loggers.py:105} WARNING - Failed to log action with (psycopg2.errors.UndefinedTable) relation "log" does not exist
LINE 1: INSERT INTO log (dttm, dag_id, task_id, event, execution_dat...
^
[SQL: INSERT INTO log (dttm, dag_id, task_id, event, execution_date, owner, extra) VALUES (%(dttm)s, %(dag_id)s, %(task_id)s, %(event)s, %(execution_date)s, %(owner)s, %(extra)s) RETURNING log.id]
[parameters: {'dttm': datetime.datetime(2022, 3, 25, 9, 27, 17, 506252, tzinfo=Timezone('UTC')), 'dag_id': None, 'task_id': None, 'event': 'cli_upgradedb', 'execution_date': None, 'owner': 'airflow', 'extra': '{"host_name": "airflow-run-airflow-migrations-x7t6v", "full_command": "[\'/home/airflow/.local/bin/airflow\', \'db\', \'upgrade\']"}'}]
(Background on this error at: http://sqlalche.me/e/13/f405)
DB: postgresql://<db>/airflow?sslmode=prefer
[2022-03-25 09:27:18,510] {db.py:919} INFO - Creating tables
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
/home/airflow/.local/lib/python3.9/site-packages/azure/storage/common/_connection.py:82 SyntaxWarning: "is" with a literal. Did you mean "=="?
但也可能是我们要安装到 airflow 中的自定义依赖项存在一些问题 docker 图片:
FROM apache/airflow:2.2.4-python3.9
USER root
RUN apt-get update \
&& apt-get install build-essential -y \
&& apt-get install unixodbc-dev -y \
&& apt-get install libkrb5-dev -y
USER airflow
RUN pip install pipenv
COPY Pipfile /
RUN pipenv install --system
有人能给我指出正确的方向吗,我目前对这个问题很迷茫,因为这似乎不是 HELM 图表的配置问题。与我们的外部 Postgres 数据库的连接似乎可以正常工作。这似乎是气流源代码本身的问题。
对于所有遇到同样问题的人:Airflow HELM 图表似乎只适用于标准标签,例如2.2.4
而不是 2.2.4-python3.9
。这意味着您必须为 运行 您的 DAG 使用 python3.7
(由标准标签使用)。
所选答案错误。 Helm chart 对 -python 图像也有类似的作用(在此处添加此内容以免答案误导 passers-by)。