在Databricks上使用Airflow时DAG持续处于Running状态的问题
Airflow触发Databricks任务持续处于Running状态的排查方案
问题描述
我正按照Databricks官方指南配置Airflow与Databricks集成,使用的Python代码如下:
from airflow import DAG from airflow.providers.databricks.operators.databricks import DatabricksRunNowOperator from airflow.utils.dates import days_ago default_args = { 'owner': 'airflow' } with DAG('databricks_dag', start_date = days_ago(2), schedule_interval = None, default_args = default_args ) as dag: opr_run_now = DatabricksRunNowOperator( task_id = 'run_now', databricks_conn_id = 'databricks_default', job_id = 123 # 这不是我的实际Job ID )
通过Airflow UI触发该DAG后,它一直处于Running状态。我已配置好databricks_conn_id并使用PAT令牌,Webserver和Scheduler均正常运行,示例DAG可成功执行。相关状态截图:

排查及解决步骤
检查Databricks任务实际状态
登录Databricks控制台,找到对应Job ID的运行记录,确认任务是真的在执行,还是已经结束但Airflow未同步状态。若Databricks任务已完成/失败,说明Airflow的状态回调或轮询存在问题。调整任务状态检测参数
DatabricksRunNowOperator默认通过轮询获取任务状态,可修改以下参数优化:polling_interval_seconds:调整轮询间隔(默认30秒),针对长耗时任务可适当调大timeout_seconds:设置任务超时阈值,超过后自动标记失败
修改示例:
opr_run_now = DatabricksRunNowOperator( task_id = 'run_now', databricks_conn_id = 'databricks_default', job_id = 123, polling_interval_seconds=60, timeout_seconds=3600 )验证PAT令牌权限
确保用于连接的PAT令牌拥有jobs-run-manage权限,以及任务关联集群的访问权限。可在Databricks的用户设置中查看令牌的权限范围。查看Airflow任务日志
在Airflow UI进入该任务的日志页面,检查是否存在API调用失败、权限报错、网络超时等信息。常见问题包括连接配置中的Databricks工作区URL错误、令牌过期等。测试网络连通性
在Airflow部署服务器上执行curl命令,验证能否正常访问Databricks API:curl -H "Authorization: Bearer <你的PAT令牌>" https://<你的Databricks工作区URL>/api/2.0/jobs/get?job_id=123若返回正常的Job信息,说明网络和权限无问题;若报错,排查网络防火墙策略或权限配置。
内容的提问来源于stack exchange,提问作者buttermilk
相关产品推荐
相关产品推荐

