La connexion à distance Mapr Ruche via JDBC
Cette question est similaire, mais pas identique, comme La ruche JDBC getConnection n'est pas de retour . Pourtant, c'est sur une connexion à distance. Aussi le metastore est présent dans l'annuaire dans lequel le hiveserver2 a commencé.
Nous avons une course de mapr cluster sur une machine distante. Je tiens à vous connecter à la Ruche sur ce cluster à l'aide de Java JDBC.
Donc nous avons commencé la ruche serveur:
/opt/mapr/ruche/ruche 0.11/bin/hiveserver2
La sortie du processus du serveur ne contiennent pas de messages d'erreur. Il écoute sur le port 10000 tel que rapporté par la commande netstat.
J'essaie de me connecter au serveur, comme décrit dans https://cwiki.apache.org/confluence/display/Hive/HiveClient, qui remplace localhost par le nom du serveur où le hiveserver2 est en cours d'exécution:
Connection con =
DriverManager.getConnection("jdbc:hive://myserver.example.com:10000/default", "", "");
Pourtant, le programme se bloque exactement à cette déclaration. Il ne semble pas pour obtenir une connexion.
J'ai peut-être besoin de fournir un nom d'utilisateur et le mot de passe?
Au début, j'avais utilisé le pilote org.apache.hadoop.de la ruche.jdbc.HiveDriver.
Pourtant il me semble que je devrais être à l'aide du pilote org.apache.de la ruche.jdbc.HiveDriver si le hive2 serveur est en cours d'exécution. Maintenant, je suis l'Exception suivante:
Exception in thread "main" java.sql.SQLException: Could not establish connection to jdbc:hive2://myserver.example.com:10000/default: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null)
at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:246)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:132)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at HiveJdbcClient.main(HiveJdbcClient.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null)
at org.apache.thrift.TApplicationException.read(TApplicationException.java:108)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:71)
at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:144)
at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:131)
at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:237)
... 10 more
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème et a été en mesure de se déplacer par l'ajout de la dépendance correct à mon pom.xml fichier. J'avais la dernière version de apache sortie de la ruche de maven central et sont passés à l'aide de la cdh4 la libération de la cloudera repo. Donc, ce que vous voyez peut être un symptôme d'avoir le mal de la ruche-jdbc dépendance. Voici le maven extrait de j'ai ajouté à mon pom fichier:
Voici un lien sur le cloudera repo.
Aussi, l'ajout de l' ";auth=noSasl" à l'URL fait ma demande accrocher donc je l'ai enlevé.
Je pense que vous devez spécifier le nom d'utilisateur. Aussi itshould être hive2 pas ruche puisque vous utilisez hiveserver2.
Essayez de modifier votre url de connexion:
Donné dans le lien Hive2
Espère que cela aide...!!!
J'ai également eu le même problème.
Veuillez vérifier si le serveur est accessible sur le port 10000 de la part du client (serveur et le port sont activées pas de pare-feu est contraignant) également vérifier hiveserver est en place et en cours d'exécution. si oui, alors il devrait fonctionner.
suivants du code du travail pour moi pour mapr de la ruche.
si vous avez toute question concernant mapr, veuillez vous référer answers.mapr.com, il contient la plupart des informations qui pourraient vous être exigeant.
Vous pouvez utiliser le beeline client pour se connecter à la ruche à l'aide de JDBC.
Il serait quelque chose comme: beeline !connectez jdbc:hive2://localhost:10000
vérifier le lien:
http://dwbitechguru.blogspot.ca/2014/11/how-to-connect-to-hadoop-hive-using.html
Dans mon cas, l'ajout le:
;auth=noSasl
à la chaîne de connexion JDBC résolu l'attente interminable pour la connexion !Vous devriez obtenir hive-service-X.XX.X-cdhX.X.X.jar ici :https://repository.cloudera.com/artifactory/cloudera-repos/org/apache/hive/;
Il fonctionne bien pour moi.