2015-11-30 45 views
1

我跟着this doc嘗試建立到配置單元的jdbc連接。但日食顯示這個錯誤。似乎沒有搞清楚它到底意味着,用適當的用戶名和密碼的連接,直線的作品所以它不是authentication.Below的問題是我要面對錯誤:JDBC到配置單元連接在無效操作失敗isValid()

> 15/11/27 13:15:41 INFO jdbc.Utils: Supplied authorities: localhost:10000 
> 15/11/27 13:15:41 INFO jdbc.Utils: Resolved authority: localhost:10000 
> 15/11/27 13:15:41 INFO jdbc.HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default 
> Exception in thread "main" java.sql.SQLException: Method not supported 
    at org.apache.hive.jdbc.HiveConnection.isValid(HiveConnection.java:1026) 
    at HiveJDBC.main(HiveJDBC.java:21) 

這裏是代碼:

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

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

    public static void main(String[] args) throws SQLException { 
    try { 
     Class.forName(driverName); 

    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.exit(1); 
    } 
    Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", "PASSWORD"); 
    if(con.isValid(0)){ 
     System.out.println("success"); 
    }else{ 
     System.out.println("fail"); 
    } 

    Statement stmt = con.createStatement(); 
    String tableName = "tabledriver"; 
    //stmt.executeQuery("create database " + tableName); 

    } 
} 
+0

兩者都是相同的。 「org.apache.hive.jdbc.HiveDriver」 – Codex

+0

我已經從已安裝的配置單元庫引用了相同的hive-jdbc-1.2.1.jar,所以它也與直線一樣,如果我沒有錯的話。爲直線而不同?如何檢查直線使用的罐子.. – Codex

回答

2

您的來電

if(con.isValid(0)){ 

法律 - 但不是實施由Hive JDBC Driver驅動。

Hive Source

@Override 
public boolean isValid(int timeout) throws SQLException { 
    // TODO Auto-generated method stub 
    throw new SQLException("Method not supported"); 
} 

用一個簡單的if(con != null)更換檢查,你會被罰款。

+1

非常感謝!它的工作..我想我採取了這一行「值爲0表示超時不適用於數據庫操作」以錯誤的方式。你能否告訴我這是什麼意思?有人提到,如果超時小於0,那麼將拋出一個sql-exception – Codex

+0

你沒有做錯任何事。你剛剛在java.sql.Connection中遇到過一個很少使用的方法(沒有見過它),所以Hive Developers顯然選擇不實現這個方法。 – Jan