HiveThriftServer2仅与hive 1.2.1 jar

时间:2018-05-29 18:55:46

标签: apache-spark hive spark-thriftserver

我使用以下命令启动Spark应用程序中的HiveThriftServer: 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:必填字段&#39; client_protocol&#39;没有设置! Struct:TOpenSessionReq(client_protocol:null,configuration:{use:database = default})     at 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)     在org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:576)

如果我使用相同版本的JARS作为服务器,它的工作原理。

现在我有两个选择: 1.将服务器端的JARS更改为较新版本(2.1.1),但服务器无法启动(实际上它会引发ClassNotFound问题)。 HiveThriftServer2类来自spark-hive-thriftserver jar,如果我查看它的pom.xml,它依赖于1.2.1 jar,这很明显服务器不会在2.1.1版本上启动

  1. 我在客户端更改版本, 但是我没有选择更改JAR版本,因为App服务器中的其他应用程序依赖于这些版本。
  2. 有人可以建议任何可能的方法来解决这个问题吗? (理想情况下,较新版本的jas应具有向后兼容性)

0 个答案:

没有答案