2017-10-17 19 views
3

J'ai une base de données PostgreSQL installée sur ma machine locale (Windows) et je voudrais l'importer dans mon Sandbox Hortonworks en utilisant Apache Sqoop. Bien que quelque chose comme this sonne bien, le problème est que mon Sandbox est assis dans un conteneur Docker, donc des instructions telles que sqoop list-tables --connect jdbc:postgresql://127.0.0.1/ambari --username ambari -P semblent se heurter à des erreurs d'authentification. Je crois que le problème vient d'essayer de se connecter à l'hôte local depuis l'intérieur du conteneur docker.Importer PostgreSQL avec Sqoop dans Docker

J'ai regardé this post lors de la connexion à une base de données MySQL à partir d'un conteneur et this one pour essayer d'utiliser PostgreSQL à la place, mais j'ai échoué jusqu'ici. J'ai essayé de me connecter à '127.0.0.1' et '172.17.0.1' (l'IP de l'hôte) afin de me connecter à mon hôte local depuis Docker. J'ai également ajusté le fichier de configuration de PostgreSQL pour écouter les connexions sur toutes les adresses IP. Cependant, je reçois toujours les messages d'erreur suivants lorsque je lance sqoop list-tables --connect jdbc:postgresql://<ip>:5432/<db_name> --username postgres -P (où <ip> est soit 127.0.0.1 ou 172.17.0.1 et <db_name> est le nom de ma base de données)

Pour se connecter à 127.0.0.1:

ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres" 

Pour se connecter à 172.17.0.1:

Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 

Toutes les suggestions seraient très utiles!

Répondre

0

Si cela est juste pour les tests locaux et non pour le codage de niveau de production, vous pouvez activer toutes les connexions de confiance à votre base de données en mettant à jour le fichier pg_hba.conf

  1. Localisez votre fichier pg_hba.conf dans votre postgres data répertoire
  2. le fichier et Vim mettre à jour avec les lignes suivantes:

    #TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 0.0.0.0/0 trust host all all ::1/128 trust

  3. Redémarrez votre postgres Service

Si vous faites cela, votre premier cas d'utilisation (en utilisant 127.0.0.1) devrait travailler

+0

Désolé je l'ai mentionné que je fais cela sur Windows, ce qui signifie local/all/all/trust ne fonctionne pas (voir [cet article] (https://stackoverflow.com/questions/16846363/postgresql-9-2-4-windows-7-service-wont-start-could-not -load-pg-hba-conf)) – tgordon18