我正在使用数据砖提供的spark-redshift库来从Spark中的redshift表中读取数据。链接:https://github.com/databricks/spark-redshift。
注意:红色群集和EMR群集的AWS账户在我的情况下是不同的。
我能够在Spark LOCAL模式下使用spark-redshift连接到redshift。但是相同的代码在EMR上失败,但有以下异常:java.sql.SQLException:设置/关闭连接时出错:连接超时。
我尝试在我的EMR集群的EC2安全组的入站规则中添加Redshift,但它没有帮助。我这样做时使用了Source作为MyIP。
答案 0 :(得分:0)
我使用VPC对等找到了解决方法:http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/Welcome.html
我们使用VPC对等连接redshift和EMR VPC,并更新了各个VPC的路由表,以接受来自其他VPC的IPv4 CIDR的流量。 VPC对等也可以跨AWS账户完成。请参阅上面的链接以获取更多详细信息。
完成此操作后,转到两个帐户中的VPC对等连接,并启用来自对等VPC的DNS解析。为此,选择VPC对等连接 - >转到顶部的操作选项 - >选择修改DNS设置 - >选择允许来自对等VPC的DNS解析。
答案 1 :(得分:0)
我处于类似的情况,而是将Redshift添加到EMR集群的EC2安全组的入站规则中,请将EMR集群的公共IP添加到redshift的安全组中,这对我有用。希望这可以帮助!