我们正在运行dbt
版本0.16.1。我们已经设置了可以在Airflow中运行的数据管道,并建立了一个库来映射在其自身在Airflow上的bash运算符中运行的每个dbt
模型。
执行的dbt
运行命令如下:
cd /usr/local/airflow/models/[PACKAGE_NAME] && dbt --log-format json run --models [MODEL_NAME]--no-version-check --profiles-dir=/usr/local/airflow/dags/dags-enterprise-model/enterprise_model/include --target=[TARGET] --profile=[PROFILE]
有时(可能同时运行两个模型时),Airflow会在dbt run
命令中显示以下消息:
信息-FileNotFoundError:[错误2]没有这样的文件或目录:'logs / dbt.log'->'logs / dbt.log.1'
这是有问题的,因为日志文件没有更新,但是任务的退出代码列为0:
命令退出,返回码为0
这将导致Airflow将任务标记为成功;但是,日志未成功打印。
我的问题:
我不确定这是我的理解上的空白,还是dbt
记录中的错误,或者两者都是?
答案 0 :(得分:2)
这听起来肯定是由于同时将dbt写入同一文件而多次调用的结果。这不是dbt错误,因为我们不打算同时调用dbt。单个调用可以通过线程处理并发模型运行。日志冲突是将dbt模型DAG重新实现为Airflow DAG的一种风险。
这两个都是公平的问题: