1. 程式人生 > >使用 JDBC 連接 Hive(ClassNotFoundException No suitable driver fo

使用 JDBC 連接 Hive(ClassNotFoundException No suitable driver fo

str uitable 分享 from could not jdb set div system

package hive;

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

public class App {
    public static void main(String[] args) throws Exception {

        Class.forName("org.apache.hive.jdbc.HiveDriver");
        Connection conn = DriverManager.getConnection("jdbc:hive2://hadoop0:10000/default"
, "", ""); // default 為 hive的數據庫名 Statement stmt = conn.createStatement(); String querySQL="SELECT * FROM default.t1"; ResultSet res = stmt.executeQuery(querySQL); while (res.next()) { System.out.println(res.getInt(1
)); } } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

連接時的三大問題

JDBC 連接 Hive 時可能會出現的問題,主要是因為 hive 版本的區別;

  • (1)java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver

    解決方案:

    Class.forName("org.apache.hive.jdbc.HiveDriver"
    );
    • 1

    而不是:

    Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
    • 1
  • (2)java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default

    在 hive 1.2.1 需要 jdbc:hive2://localhost:10000/default 而不是 jdbc:hive://localhost:10000/default

  • (3)java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://X.X.X.X:10000/default: java.net.ConnectException: Connection refused

    對於 hive 1.2 及以上的版本,hive不再使用,而直接使用 hiveserver2 命令;

    在Linux shell:

    [root@hadoop0 ~]# hiveserver2 &
    • 1

References

[1] Connect from Java to Hive using JDBC

[2] java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default

[3] How to start hiveserver2 as service

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

使用 JDBC 連接 Hive(ClassNotFoundException No suitable driver fo