Я запускаю приложение HiveThriftServer в Spark с помощью: HiveThriftServer2 .startWithContext (session.sqlContext ());
Я вижу, что мне нужно включить hive-jdbc-1.2.1.spark2, hive-exec-1.2.1.spark2, hive-metastore-1.2.1.spark2 jar в пути к классам, чтобы запустить его.
Пока все хорошо, он запускается, и я вижу вкладку "JDBC / ODBC"в Spark UI.
Теперь, на стороне клиента (где мне нужно подключиться к этому серверу для доступа к данным), у меня есть более продвинутая версия JARS, такая как hive-jdbc-2.1.1 и т. д. Когда япопробуйте подключиться к серверу с кодом ниже, я получаю исключение:
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
} catch (ClassNotFoundException e) {
System.out.println("Driver not found");
}
Connection con = DriverManager.getConnection("jdbc:hive2://<server-name>:10015/default", "", "");
Исключение: вызвано: org.apache.thrift.TApplicationException: Обязательное поле 'client_protocol' не установлено!Структура: TOpenSessionReq (client_protocol: null, конфигурация: {use: database = default}) в org.apache.thrift.TApplicationException.read (TApplicationException.java:111) в org.apache.thrift.TServiceClient.receiveBase (TServiceClient.java:79) в org.apache.hive.service.rpc.thrift.TCLIService $ Client.recv_OpenSession (TCLIService.java:168) в org.apache.hive.service.rpc.thrift.TCLIService $ Client.OpenSession (TCLIService.java:155) at org.apache.hive.jdbc.HiveConnection.openSession (HiveConnection.java:576)
И если я использую ту же версию JARS, что и сервер, она работает.
Теперь у меня есть два варианта: 1. Изменить JARS на стороне сервера на более новые версии (2.1.1), но затем сервер не запускается (на самом деле он жалуется на проблемы ClassNotFound).Класс HiveThriftServer2 происходит от jar spark-hive-thriftserver, и если я посмотрю на его файл pom.xml, он будет зависеть от jar-файлов 1.2.1, и это делает очевидным, что сервер не будет запускаться в версиях 2.1.1
Я изменяю версию на стороне клиента, но у меня нет возможности изменить версию JAR, поскольку другие приложения на сервере приложений зависят от этих версий.
Может кто-нибудь предложитьлюбой возможный способ исправить это?(В идеале более новые версии jas должны иметь обратную совместимость)