当 AWS Batch 上的 运行 时,Redshift 频谱查询永远不会终止

Redshift spectrum query never terminates when running on AWS Batch

我一直在制作数据迁移管道,并使用 Docker 在本地对其进行测试。 效果很好,没有环境问题,结果符合预期。

但是,当我将同一个 Docker 文件推送并部署到 运行 AWS Batch 上的整个过程时,一个查询永远不会完成,并最终失败。该查询如下:

SELECT * FROM redshift_spectrum_schema.table;

我试图减少代码来找出问题所在。因此,以下代码在本地运行良好,但在 AWS Batch 上运行不佳:

conn = psycopg2.connect(
    host=os.environ["HOST"],
    port=int(os.environ["PORT"]),
    user=os.environ["USER"],
    password=os.environ["PASSWORD"],
    dbname=os.environ["DBNAME"]
)

cursor = conn.cursor()
query = "SELECT * FROM redshift_spectrum_schema.table;"
cursor.execute(query)

我不明白为什么 运行在本地和在 AWS Batch 上有这么大的区别。

Redshift query dashboard screenshot

更新:经过几天的搜索,我成功修复了它。

我必须调整 Batch 实例的 de MTU 以匹配 Redshift 集群的 MTU。

更多详情: