postgresql - Airflow dag 中 postgres_operator 的问题

标签 postgresql amazon-redshift airflow

我目前正在使用 Airflow 1.8.2 来安排一些 EMR 任务,然后在我们的 Redshift 集群上执行一些长时间运行的查询。为此,我使用 postgres_operator。查询运行大约需要 30 分钟。然而,一旦完成,连接就永远不会关闭,并且运算符(operator)会运行一个半小时以上,直到每次在 2 小时标记处终止。终止时的消息是服务器意外关闭了连接。

我检查了 Redshift 端的日志,它显示查询已运行且连接已关闭。不知何故,这永远不会传达回 Airflow。任何我可以检查的内容的指示都会有帮助。为了提供更多信息,我的 Airflow 安装是 https://github.com/puckel/docker-airflow 的扩展docker 镜像在 ECS 集群中运行,并以 SQLite 作为后端,因为我仍在测试 Airflow。另外,我在后端使用顺序执行器。我将不胜感激在此事上的任何帮助。

最佳答案

我们之前也遇到过类似的问题,但我正在使用 SQLAlchemy 来 Redshift,如果您使用 postgres_operator,它应该非常相似。如果 Redshift 没有看到长时间运行的查询的任何事件,它似乎会关闭连接,在您的情况下,30 分钟是相当长的查询。

检查https://www.postgresql.org/docs/9.5/static/runtime-config-connection.html 您有三个设置:tcp_keepalives_idletcp_keepalives_idletcp_keepalives_count,它们向 redshift 发送实时消息以指示“嘿,我还活着。< br/>
您可以传递以下内容作为参数,如下所示: connect_args={'keepalives': 1, 'keepalives_idle':60, 'keepalives_interval': 60}

关于postgresql - Airflow dag 中 postgres_operator 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46396876/

相关文章:

json - postgresql json_object_keys(var1) 消除 var1 为 null 的记录

postgresql - Postgres SQL (Amazon Redshift) 在启动时运行命令

postgresql - psql,无法将数据库内容复制到另一个 - 无法在事务 block 内运行 -

sql - 如何在 redshift 上取消嵌套 json 字符串数组

azure - 集成 Azure 数据工厂和 Airflow

sql - 获取有效的日期范围。最小值和最大值

amazon-redshift - Redshift : Delete statement does not allow table alias?

amazon-web-services - 我们可以只使用时间戳列的年月作为 Amazon Redshift 中的分布键吗

airflow - Airflow DAG 的任务超时

Airflow 弃用警告传递了无效参数