当 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。
更多详情:
我一直在制作数据迁移管道,并使用 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。
更多详情: