2015-06-19 11 views
6

मैं Hive2 त्रुटि के लिए जेबीडीसी कोड चलाने की कोशिश करता हूं। मेरे पास 1.2.0 संस्करण हैडऑप 1.2.1 संस्करण है। लेकिन कमांड लाइन हाइव और बीलाइन बिना किसी समस्या के ठीक काम करता है। लेकिन jdbc त्रुटि प्राप्त करने के साथ।ERROR jdbc.HiveConnection: सत्र खोलने में त्रुटि हाइव

import java.sql.SQLException; 
import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.sql.DriverManager; 

public class HiveJdbcClient { 
    private static String driverName = "org.apache.hive.jdbc.HiveDriver"; 

    /** 
    * @param args 
    * @throws SQLException 
    */ 
    public static void main(String[] args) throws SQLException { 
//BasicConfigurator.configure(); 

    try { 
     Class.forName(driverName); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    //replace "hive" here with the name of the user the queries should run as 
    Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default","", ""); 
    Statement stmt = con.createStatement(); 
    String tableName = "cdr"; 
    stmt.execute("drop table if exists " + tableName); 
// show tables 
    String sql = "show tables '" + tableName + "'"; 
    System.out.println("Running: " + sql); 
    ResultSet res = stmt.executeQuery(sql); 
    if (res.next()) { 
     System.out.println(res.getString(1)); 
    } 

    } 
} 

मुझे यह कोड चलाने के दौरान त्रुटि मिलती है।

15/06/19 12:08:53 INFO jdbc.HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default 
15/06/19 12:08:53 ERROR jdbc.HiveConnection: Error opening session 
org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! 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:71) 
     at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:156) 
     at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:143) 
     at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:578) 
     at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:192) 
     at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
     at java.sql.DriverManager.getConnection(DriverManager.java:571) 
     at java.sql.DriverManager.getConnection(DriverManager.java:215) 
     at HiveJdbcClient.main(HiveJdbcClient.java:24) 
Exception in thread "main" java.sql.SQLException: Could not establish connection to jdbc:hive2://localhost:10000/default: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default}) 
     at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:589) 
     at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:192) 
     at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
     at java.sql.DriverManager.getConnection(DriverManager.java:571) 
     at java.sql.DriverManager.getConnection(DriverManager.java:215) 
     at HiveJdbcClient.main(HiveJdbcClient.java:24) 
Caused by: org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default}) 

कोई समाधान?

उत्तर

11

org.apache.thrift.TApplicationException: आवश्यक क्षेत्र 'client_protocol' सेट नहीं हो! Struct: TOpenSessionReq (client_protocol: अशक्त, विन्यास: {उपयोग: डेटाबेस = डिफ़ॉल्ट}) org.apache.thrift.TApplicationException.read (TApplicationException.java:111) पर

यह त्रुटि ज्यादातर अगर होता है आपके पास संस्करण मिस्चैच आपके हाइव और हाइव-जेडीबीसी के बीच है। कृपया जांचें कि दोनों संस्करण मेल खाते हैं या नहीं।

अधिक जानकारी के लिए कृपया this देखें।

2

ऐसा तब होता है जब JiveBC ड्राइवर का एक नया संस्करण HiveServer2 के पुराने संस्करण के विरुद्ध उपयोग किया जाता है। एक जेडीबीसी ड्राइवर का उपयोग करें जो सर्वर (पसंदीदा), या सर्वर से पुराना संस्करण के समान संस्करण है।

मुद्दा https://issues.apache.org/jira/browse/HIVE-6050

0

में ट्रैक की जाती मैं अपने छत्ते और छत्ता-JDBC के बीच संस्करण मैच है, त्रुटि नीचे मिला है।

11:18:20,INFO,hive.jdbc.HiveConnection,Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default 
11:24:49,ERROR,hive.jdbc.HiveConnection,Error opening session 
org.apache.thrift.transport.TTransportException 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) 
    at org.apache.thrift.transport.TSaslTransport.readLength(TSaslTransport.java:376) 
    at org.apache.thrift.transport.TSaslTransport.readFrame(TSaslTransport.java:453) 
    at org.apache.thrift.transport.TSaslTransport.read(TSaslTransport.java:435) 
    at org.apache.thrift.transport.TSaslClientTransport.read(TSaslClientTransport.java:37) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) 
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) 
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) 
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219) 
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
    at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:156) 
    at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:143) 
    at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:455) 
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:178) 
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
+0

क्या लोगों को त्रुटि का कारण पता है? – tommy

+0

हाइव-साइट.एक्सएमएल – dilshad

+0

में त्रिफ सर्वर कॉन्फ़िगरेशन की जांच करें I hive-site.xml की जांच करें, यह कोई समस्या नहीं है! – tommy

0

"क्लाइंट_प्रोटोकॉल" फ़ील्ड हाइव 1.1 संस्करण में उपलब्ध है। आपको क्लासपाथ में हाइव-सर्विस-1.1.0.jar जोड़ने की आवश्यकता है।

मुझे आशा है कि आपकी समस्या हल हो जाएगी।