2017-07-07 3 views
2

J'utilise la bibliothèque spark-redshift fournie par les briques de données pour lire les données d'une table redshift dans Spark. Lien: https://github.com/databricks/spark-redshift.La connexion a expiré avec le redshift spark sur EMR

Remarque: Le compte AWS pour le cluster redshift et le cluster EMR sont différents dans mon cas.

Je suis capable de me connecter à redshift en utilisant spark-redshift en mode Spark LOCAL. Mais le même code échoue sur EMR avec l'exception suivante: java.sql.SQLException: Erreur lors de la définition/fermeture de la connexion: la connexion a expiré.

J'ai essayé d'ajouter Redshift dans la règle de trafic entrant sur le groupe de sécurité EC2 de mon cluster EMR mais cela n'a pas aidé. J'avais utilisé Source comme MyIP en faisant cela.

Répondre

0

Je trouve la solution à cela en utilisant VPC peering: http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/Welcome.html

Nous avons connecté le redshift et le DME CVP en utilisant VPC peering et mis à jour les tables de routage des différents CVP à accepter le trafic d'IPv4 CIDR de l'autre VPC. Le peering VPC peut également être effectué sur des comptes AWS. Reportez-vous au lien ci-dessus pour obtenir plus de détails. Une fois cela fait, accédez à la connexion de peering VPC dans les deux comptes et activez la résolution DNS à partir de VPC homologue. Pour cela, sélectionnez la connexion de peering VPC -> allez à l'option Actions en haut -> Sélectionnez Modifier les paramètres DNS -> Sélectionnez Autoriser la résolution DNS de VPC homologue.