HiveThriftServer2 совместим только с банками улья 1.2.1 - PullRequest
0 голосов
/ 29 мая 2018

Я запускаю приложение 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 должны иметь обратную совместимость)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...