为啥在 Mac 上安装 Apache Airflow 时没有出现此类表错误?

Posted

技术标签:

【中文标题】为啥在 Mac 上安装 Apache Airflow 时没有出现此类表错误?【英文标题】:Why do I get no such table error when installing Apache Airflow on Mac?为什么在 Mac 上安装 Apache Airflow 时没有出现此类表错误? 【发布时间】:2019-12-22 05:38:41 【问题描述】:

很难把这个正确的标题。好的,到此为止。我正在按照本教程在我的 Mac(Mojave 版本)上安装 Apache Airflow -

https://towardsdatascience.com/getting-started-with-apache-airflow-df1aa77d7b1b

就在执行 pip install airflow 任务后的第一步,当我运行气流版本命令时,我收到以下错误,然后出现气流版本 -

错误 - 使用 Traceback 执行前回调失败(最近一次调用最后一次): 文件 “/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py”, 第 1244 行,在 _execute_context 光标、语句、参数、上下文文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/default.py”, 第 552 行,在 do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: no such table: log

上述异常是以下异常的直接原因:

Traceback(最近一次调用最后一次):文件 “/Users/karthikv/anaconda3/lib/python3.7/site-packages/airflow/utils/cli_action_loggers.py”, 第 68 行,在 on_pre_execution cb(**kwargs) 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/airflow/utils/cli_action_loggers.py”, 第 99 行,在 default_action_log 中 session.add(log) 文件“/Users/karthikv/anaconda3/lib/python3.7/contextlib.py”,第 119 行,在 退出 下一个(self.gen)文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/airflow/utils/db.py”, 第 45 行,在 create_session 中 session.commit() 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py”, 第 1026 行,提交中 self.transaction.commit() 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py”, 第 493 行,提交中 self._prepare_impl() 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py”, 第 472 行,在 _prepare_impl 中 self.session.flush() 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py”, 第 2451 行,齐平 self._flush(对象)文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py”, 第 2589 行,在 _flush transaction.rollback(_capture_exception=True) 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py”, 第 68 行,在 退出 compat.reraise(exc_type,exc_value,exc_tb)文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/compat.py”, 第 129 行,在加注中 提高价值文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py”, 第 2549 行,在 _flush flush_context.execute() 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py”, 第 422 行,执行中 rec.execute(self) 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py”, 第 589 行,在执行中 uow,文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py”, 第 245 行,在 save_obj 中 插入,文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py”, 第 1120 行,在 _emit_insert_statements 声明,参数文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py”, 第 988 行,执行中 返回方法(self,multiparams,params)文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/sql/elements.py”, 第 287 行,在 _execute_on_connection 中 返回 connection._execute_clauseelement(self, multiparams, params) 文件 “/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py”, 第 1107 行,在 _execute_clauseelement 中 蒸馏参数,文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py”, 第 1248 行,在 _execute_context e、语句、参数、游标、上下文文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py”, 第 1466 行,在 _handle_dbapi_exception 中 util.raise_from_cause(sqlalchemy_exception,exc_info)文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/compat.py”, 第 383 行,在 raise_from_cause 中 reraise(类型(异常),异常,tb=exc_tb,原因=原因)文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/util/compat.py”, 第 128 行,在加注中 raise value.with_traceback(tb) 文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/base.py”, 第 1244 行,在 _execute_context 光标、语句、参数、上下文文件“/Users/karthikv/anaconda3/lib/python3.7/site-packages/sqlalchemy/engine/default.py”, 第 552 行,在 do_execute cursor.execute(statement, parameters) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 没有这样 table: log [SQL: INSERT INTO log (dttm, dag_id, task_id, event, execution_date, owner, extra) VALUES (?, ?, ?, ?, ?, ?, ?)] [参数:('2019-08-12 20:50:24.960006',无,无,'cli_version', 无,'karthikv','“host_name”:“192-168-1-6.tpgi.com.au”, "full_command": "[\'/Users/karthikv/anaconda3/bin/airflow\', \'版本\']"')]

(此错误的背景:http://sqlalche.me/e/e3q8)

谁能帮助我这个错误是什么意思以及如何解决它?我从说明中了解到,默认情况下会安装 SQLLite db,并且在我们开始设置后端数据库(比如 PostgreSQL)之前,将设置一个 DAG 限制。

我尝试使用 pip uninstall airflow 卸载以再次执行全新安装。我收到以下错误 -

警告:跳过气流,因为它没有安装。

请帮助我解决问题(或)指向我可以进一步阅读的资源。

【问题讨论】:

【参考方案1】:

安装后需要进行初始化:

$ export AIRFLOW_HOME=some/dir
$ airflow db init  # or `airflow initdb` for the legacy 1.X

如果 AIRFLOW_HOME 未设置,~/airflow/ 将被创建和使用。这是存储配置和日志的地方;如果要重置配置,请删除存储在AIRFLOW_HOME 中的目录并重新运行airflow db init

现在其他命令应该可以工作了,例如

$ airflow db check
[2021-02-06 23:35:21,577] db.py:756 INFO - Connection successful.

来源:Initializing Airflow Database 部分来自 airflow 文档。感谢Anas Tiour 在this comment 中通知了有关 2.0.0 中命令行界面更改的信息!

【讨论】:

谢谢@hoefling。像魅力一样工作!我很惊讶链接没有指定这个强制性步骤 很高兴能帮上忙!我猜你提到的教程写得不是很透彻;最好是在遇到困难时查看官方文档。例如。 Installation 部分提到了 initdb 调用。 显然 Apache Airflow CLI 已更改。我是2.0.0版本,命令是:airflow db init @AnasTiour 非常好的评论,谢谢!更新了答案以涵盖 cli 更改。

以上是关于为啥在 Mac 上安装 Apache Airflow 时没有出现此类表错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Mac OS 上安装 Nokogiri 失败并缺少 libiconv?

在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为啥?**

如何在 Mac OS X 上安装 Apache Ant?

window和mac配置apache,及mac下安装mysql

尝试在 Mac 上安装 apache-airflow 时出错。我怎样才能解决这个问题?

为啥OSX 不能在“Macintosh HD”上安装,Mac OS X 讨论区