在 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 上被拒绝访问