0

以下を使用して、Spark アプリケーションで HiveThriftServer を開始しています。

それを開始するには、クラスパスに hive-jdbc-1.2.1.spark2、hive-exec-1.2.1.spark2、hive-metastore-1.2.1.spark2 jar を含める必要があることがわかります。

これまでのところ、うまく起動し、Spark UI に「JDBC/ODBC」タブが表示されます。

現在、クライアント側 (データにアクセスするためにこのサーバーに接続する必要がある場所) には、hive-jdbc-2.1.1 などのより高度なバージョンの JARS があります。以下のコードでサーバーに接続しようとすると、私は例外を取得します:

    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' が設定されていません! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default}) at org.apache.thrift.TApplicationException.read(TApplicationException.java:111) at 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 jars の依存関係があり、サーバーが 2.1.1 バージョンで起動しないことが明らかです

  1. クライアント側でバージョンを変更しますが、アプリケーション サーバー内の他のアプリケーションがそれらのバージョンに依存しているため、JAR バージョンを変更するオプションがありません。

誰でもこれを修正する方法を提案できますか? (理想的には、jas の新しいバージョンには後方互換性があるべきです)

4

0 に答える 0