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并装载它是否需要满足其他条件?
答案 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
中列出。
list_dags
,看看是否有问题。https://airflow.incubator.apache.org/tutorial.html
复制示例,然后查看测试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。它会扫描airflow
和DAG
。
此外,如果您对DAG使用重复的dag_id,它将被覆盖。正如您似乎从示例bash运算符派生的那样,您是否保留了DAG example_bash_operator
的名称?尝试重命名。
答案 6 :(得分:0)
检查airflow.cfg(dags_folder)中的dags文件夹路径后,可能不正确。
答案 7 :(得分:0)
当我在dags文件夹中对dag进行更改时,我发现必须重新启动UI的调度程序才能拾取新的dag。我发现,当我更新 首先尝试运行: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
时,需要重新启动调度程序