气流未加载/ usr / local / airflow / dags中的dag

时间:2017-08-06 17:10:09

标签: airflow

Airflow似乎正在跳过我添加到/ usr / local / airflow / dags的dags。

当我跑步时

airflow list_dags

输出显示

[2017-08-06 17:03:47,220] {models.py:168} INFO - Filling up the DagBag from /usr/local/airflow/dags


-------------------------------------------------------------------
DAGS
-------------------------------------------------------------------
example_bash_operator
example_branch_dop_operator_v3
example_branch_operator
example_http_operator
example_passing_params_via_test_command
example_python_operator
example_short_circuit_operator
example_skip_dag
example_subdag_operator
example_subdag_operator.section-1
example_subdag_operator.section-2
example_trigger_controller_dag
example_trigger_target_dag
example_xcom
latest_only
latest_only_with_trigger
test_utils
tutorial

但这不包括/ usr / local / airflow / dags中的dags

ls -la /usr/local/airflow/dags/
total 20
drwxr-xr-x 3 airflow airflow 4096 Aug  6 17:08 .
drwxr-xr-x 4 airflow airflow 4096 Aug  6 16:57 ..
-rw-r--r-- 1 airflow airflow 1645 Aug  6 17:03 custom_example_bash_operator.py
drwxr-xr-x 2 airflow airflow 4096 Aug  6 17:08 __pycache__

气流识别DAG并装载它是否需要满足其他条件?

13 个答案:

答案 0 :(得分:11)

我的dag正在加载,但我的DAG名称错了。我期待dag由文件命名,但名称由DAG构造函数的第一个参数确定

dag = DAG(
    'tutorial', default_args=default_args, schedule_interval=timedelta(1))

答案 1 :(得分:9)

在列出dags之前尝试 airflow initdb 。这是因为 airflow list_dags 列出了数据库中存在的所有dag(而不是您提到的文件夹中)。 Airflow initdb将在数据库中为这些dag创建条目。

确保将环境变量AIRFLOW_HOME设置为/ usr / local / airflow。如果未设置此变量,气流会在主气流文件夹中查找dags,这可能不存在于您的情况下。

答案 2 :(得分:4)

dag = DAG(
    dag_id='example_bash_operator', 
    default_args=args,
    schedule_interval='0 0 * * *',
    dagrun_timeout=timedelta(minutes=60))

当实例化DAG时,它会弹出您在 dag_id 属性中指定的名称。 dag_id 用作DAG的唯一标识符

答案 3 :(得分:3)

示例文件不在/ usr / local / airflow / dags中。您可以通过编辑airflow.cfg(通常在〜/ airflow中)将其静音。在“核心”部分设置>>> None or plt.gca() plt.gca()

有几个错误可能会使您的DAG不在load_examples = False中列出。

  1. 您的DAG文件存在语法问题。要检查这一点,只需运行list_dags,看看是否有问题。
  2. 查看文件夹是否为默认的dag加载路径。对于一只新鸟,我建议只创建一个新的.py文件,并从此处https://airflow.incubator.apache.org/tutorial.html复制示例,然后查看测试dag是否出现。
  3. 确保dag文件中有python custom_example_bash_operator.py

答案 4 :(得分:0)

是你的

custom_example_bash_operator.py

的DAG名称与其他名称不同? 如果是,请尝试重新启动调度程序甚至重置db。我通常将文件名误认为是dag名称,所以最好将它们命名为相同。

答案 5 :(得分:0)

你可以分享custom_example_bash_operator.py中的内容吗?气流扫描文件中的某些魔法以确定是否是DAG。它会扫描airflowDAG

此外,如果您对DAG使用重复的dag_id,它将被覆盖。正如您似乎从示例bash运算符派生的那样,您是否保留了DAG example_bash_operator的名称?尝试重命名。

答案 6 :(得分:0)

检查airflow.cfg(dags_folder)中的dags文件夹路径后,可能不正确。

答案 7 :(得分:0)

当我在dags文件夹中对dag进行更改时,我发现必须重新启动UI的调度程序才能拾取新的dag。我发现,当我更新时,当它们运行 airflow list_dags 时,它们会出现在列表中,只是在重新启动调度程序后才出现在UI中。

首先尝试运行:

airflow scheduler

答案 8 :(得分:0)

可能有两个问题: 1.在DAG python程序中检查创建DAG对象时给定的Dag名称

dag = DAG(
dag_id='Name_Of_Your_DAG', 
....)

请注意,在许多情况下,给定的名称可能与DAG列表中已经存在的名称相同(因为如果您复制了DAG代码)。如果不是这种情况,那么 2.在Airflow的配置文件中检查设置到DAG文件夹的路径。 您可以在系统上的任何位置创建DAG文件,但需要在Airflow的配置文件中设置该DAG文件夹/目录的路径。

例如,我在主目录中创建了DAG文件夹,然后必须在终端中使用以下命令编辑airflow.cfg文件:

在主目录或根目录中创建DAG文件夹

$mkdir ~/DAG

编辑我安装了气流的气流目录中存在的airflow.cfg

 ~/$cd airflow
 ~/airflow$nano airflow.cfg

在此文件中,将dags_folder路径更改为我们创建的DAG文件夹。

如果仍然遇到问题,请重新安装Airflow,并参考link来安装Apache Airflow。

答案 9 :(得分:0)

如果airflow.cfg配置指向错误的路径,情况将会如此。

步骤1:转到{basepath} / src / config /

步骤2:打开airflow.cfg文件

步骤3:检查它应指向您创建的dags文件夹的路径

dags_folder = /usr/local/airflow/dags

答案 10 :(得分:0)

就我而言,dag 文件中的 print(something) 阻止在命令行上打印 dag 列表。

如果上述解决方案不起作用,请检查您的 dag 中是否有打印线。

答案 11 :(得分:0)

您需要先设置气流并初始化数据库

export AIRFLOW_HOME=/myfolder
mkdir /myfolder/dags
airflow db init

您也需要创建一个用户

 airflow users create \
          --username admin \
          --firstname FIRST_NAME \
          --lastname LAST_NAME \
          --role Admin \
          --email admin@example.org

如果你做对了,你应该在你的文件夹中看到 airflow.cfg。在那里您会找到显示 dags 文件夹的 dags_folder

如果您已将 dag 保存在此文件夹中,您应该会在 dag 列表中看到它

airflow dags list

,或将 UI 与

一起使用
airflow webserver --port 8080

否则,再次运行 airflow db init

答案 12 :(得分:-5)

尝试重新启动调度程序。当需要将新DAGS添加到DAG Bag

时,需要重新启动调度程序