我正在使用SQLAlchemy从python脚本运行几个从Redshift到S3的大型卸载查询。(以及sqlalchemy redshift包) 前一对可以工作,但最后一个运行longs(约30分钟)的命令在Redshift查询仪表板中标记为终止。一些数据被加载到S3,但我怀疑它不是全部。 我相当有信心查询本身是可以工作的,因为我过去曾用它在本地下载过。在
SQLAlchemy是否会关闭耗时过长的查询?有没有办法设置或延长查询超时?脚本本身继续运行,好像什么都没出问题,红移日志也不表示有问题,但当查询被标记为终止时,通常意味着外部的某些东西终止了进程。在
事实证明,这更像是sqlalchemy的问题,而不是AWS/Redshift。在
SQLAlchemy不会隐式地“提交事务”,因此,如果在未提交事务仍处于打开状态时关闭连接(即使查询本身似乎已完成),则该连接内的所有事务都将标记为已终止。
解决方案是用“committransaction;”完成连接或每个事务
您可以在两个地方控制Redshift中的超时:
在WorkloadManager控制台中,可以选择为每个队列指定超时。
ODBC/JDBC驱动程序设置。根据下面链接中的步骤更新注册表, http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-firewall-guidance.html
相关问题 更多 >
编程相关推荐