使用 Azure SQL 服务器作为后端数据库运行 Apache Airflow
Posted
技术标签:
【中文标题】使用 Azure SQL 服务器作为后端数据库运行 Apache Airflow【英文标题】:Running Apache Airflow with Azure SQL server as backend DB 【发布时间】:2020-12-16 13:05:20 【问题描述】:我正在尝试使用 mssql+pyodbc 连接字符串以 Azure SQL 数据库作为后端运行气流(已安装所有相关驱动程序)。
虽然气流能够连接到数据库并创建表,即 airflow initdb 成功运行,但我在运行气流调度程序时遇到了问题,因此,触发的任务总是在“运行”状态。
这是我在运行气流调度程序时遇到的错误:
*sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near '1'. (102) (SQLExecDirectW)")
[SQL: SELECT dag.dag_id AS dag_dag_id
FROM dag
WHERE dag.is_paused IS 1 AND dag.dag_id IN (?)]
[parameters: ('example_http_operator',)]*
(此错误的背景:http://sqlalche.me/e/13/f405)
我正在使用apache-airflow==1.10.11
。
如果您能够使用任何配置运行气流 + azure SQL DB,请随时加入。
【问题讨论】:
airflow 不正式支持 mssql / azure 作为后端数据库。它仅针对 mysql 和 PostgreSQL 进行了测试。 @Elad 的评论仍然成立吗? 2.2.0 版本说明(2021 年底)仍将 MSSQL 称为实验性版本。我的 DBA 只支持 MSSQL,对我有很大帮助。 Airflow 2.2 不支持 mssql。未来的版本将支持它。 【参考方案1】:我找到了一个文档,并讨论了有关运行气流 + azure SQL DB 的配置。或许对你有帮助。
参考:Setting up Airflow on Azure & connecting to MS SQL Server
本帖也给出了一些配置:Apache Airflow - Connection issue to MS SQL Server using pymssql + SQLAlchemy
【讨论】:
【参考方案2】:对于作为后端数据库的 MSSQL,Airflow#10713 中有解决方法。我使用apache-airflow==1.10.15
并解决了与您相同的错误。
建议的命令已附加,但我使用vi
更新而不是运行sed
命令。
RUN sed -i 's/import copy/import copy,sqlalchemy/g' /usr/local/lib/python3.6/site-packages/airflow/models/dag.py \ && sed -i 's/DagModel.is_paused.is_(True)/DagModel.is_paused == sqlalchemy.sql.expression.true()/g' /usr/local/lib/python3.6/site-packages/airflow/models/dag.py
【讨论】:
以上是关于使用 Azure SQL 服务器作为后端数据库运行 Apache Airflow的主要内容,如果未能解决你的问题,请参考以下文章
Azure 上的 .NET Core 无法连接到 SQL Server 数据库
Azure App Service Application Insights 不显示依赖的 sql 命令文本
在 Azure 移动应用服务后端将字符串属性反序列化为 Json 对象
使用 Azure SQL 数据库后端在 MS Access 中添加和编辑表的工作流