Этот вопрос похож, но не тот же, что и Hive JDBC getConnection не возвращает. Но все же речь идет об удаленном подключении. Также хранилище метаданных присутствует в каталоге, в котором был запущен hiveserver2.
У нас есть работающий кластер mapr на удаленной машине. Я хочу подключиться к Hive в этом кластере с помощью Java JDBC.
Следовательно, мы запустили сервер улья:
/opt/mapr/hive/hive-0.11/bin/hiveserver2
Выходные данные серверного процесса не содержат сообщений об ошибках. Он прослушивает порт 10000, как сообщает netstat.
Я пытаюсь подключиться к серверу, как описано в https://cwiki.apache.org/confluence/display/Hive/HiveClient, тем самым заменяя localhost именем сервера, на котором работает hiveserver2:
Connection con =
DriverManager.getConnection("jdbc:hive://myserver.example.com:10000/default", "", "");
И все же программа зависает именно на этом утверждении. Кажется, нет связи.
Возможно, мне нужно указать имя пользователя и пароль?
Изначально я использовал драйвер org.apache.hadoop.hive.jdbc.HiveDriver.
Тем не менее, мне кажется, что я должен использовать драйвер org.apache.hive.jdbc.HiveDriver, если сервер hive2 запущен. Теперь я получаю следующее исключение:
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