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

Posted

技术标签:

【中文标题】在 AWS Batch 上运行时,Redshift 频谱查询永远不会终止【英文标题】:Redshift spectrum query never terminates when running on AWS Batch 【发布时间】:2021-07-20 12:32:06 【问题描述】:

我一直在为数据迁移制作管道,并使用 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

【问题讨论】:

【参考方案1】:

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

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

更多细节:

https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-drop-issues.html https://www.flydata.com/blog/how-to-make-ec2-mtu-settings-compatible-with-amazon-redshift/

【讨论】:

以上是关于在 AWS Batch 上运行时,Redshift 频谱查询永远不会终止的主要内容,如果未能解决你的问题,请参考以下文章

在 Amazon Redshift 日志上运行 AWS Glue 爬虫会创建大量表

尽管用户角色,AWS Batch 作业在 S3 上被拒绝访问

通过 AWS Glue 执行 Redshift 过程

Spring Batch 可以与 Amazon Redshift 一起使用吗?

注册 AWS Redshift 活动

AWS 在 VPC 中访问 Redshift