从Docker容器到AWS RDS PostgreSQL失败的连接 我正在尝试从Docker上运行的Spark Master容器上连接到AWS RDS上的PostgreSQL数据库。 我在Spark Master

问题描述 投票:0回答:1
AWS session manager plugin

,以便能够从容器本身连接到DB。 aptitionally,Spark Master容器负责提交火花作业,该火花工作将利用我们在同一容器中进行的端口转发(

aws ssm start-session

)并连接到DB。

现在,当我在容器内运行
AWS configure
aws ssm start-session

命令时,我得到了

Starting session with session id xxx.
Port xxxx opened for session ID XXX
Waiting for connections...

当我在同一容器上立即运行Spark-Submit时,我从AWS SSM终端获得

Connection accepted for session xxxx

,然后在此之后,Spark Job停止了错误:
org.postgresql.util.PSQLException: Connection to localhost:5555 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

因此,看起来连接在很短的时间内被接受,然后被拒绝了吗?两个过程报告了两个完全不同的结果。
	

,我解决了这个问题,如果有人在将来面临同样的问题,我将留下对我有用的东西。

我做错了什么是仅在Spark Master容器中运行
aws ssm start-session

进程,
connection accepted
消息是接受主的连接,但是Spark可以处理懒惰的转换,因此,当主人实际上确实找到了执行操作时(

sales.show(10)

就我而言),工人是将要做实际工作的工人,因此我们有需要尚未读取数据(因为懒惰转换)来操纵的火花工作容器,但它们尚未连接到DB。因此,所接受的连接是被接受的主连接,连接错误是向主人报告的火花工人,因此矛盾。
postgresql amazon-web-services docker apache-spark docker-compose
1个回答
0
投票
aws ssm start-session

。每个工人容器将在第一次使用涉及数据的工作时分别连接到DB。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.