聯接HIVE SERVER客戶端的三種方式

在Hive/bin 目錄下輸入./hive --service hiveserver 表明hive啓動了服務器模式。

和普通模式不一樣的是,這時hive同時啓動了一個名爲thrift的服務器。

你不用去研究這個服務器的原理,認爲他是一個傳遞信息的人就好,你能夠經過他向hive發送命令,而後hive再把命令送給hadoop。

1.命令行模式:

   ./hive -h127.0.0.1 -p10000

   簡單明瞭,IP和端口。

2.JDBC模式:

     名字很糊人的。
     private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

     @BeforeClass
     public static void beforeclass() throws SQLException,
            ClassNotFoundException {
            Class.forName(driverName);
             Connection con = DriverManager.getConnection(
                  "jdbc:hive://127.0.0.1:10000/default", "", "");
             stmt = con.createStatement();
     }

     @Test
    public void dropTable() {
        try {
            res = stmt.executeQuery("drop table " + tablename);
             res = stmt.executeQuery("drop table " + basetable);
            // res = stmt.executeQuery("drop table " + agecount);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

上面就是一段經過JDBC刪除表的代碼。

和傳統的JDBC相比,HIVE的JDBC功能性和易用性我都以爲差不少。

只不過HIVE的語句風格和傳統SQL很像,因此人們才發明了這個東西。有點不三不四。在UADF方面還不是很好,不是很喜歡。


3.JAVA客戶端

        TTransport transport;
        TProtocol protocol;
        HiveClient client;
        transport = new TSocket("localhost", 10000);
        protocol = new TBinaryProtocol(transport);
        client = new HiveClient(protocol);
        transport.open();
        client.execute("select usercount(userid) from user3");
        transport.close();
       
       很明顯,咱們調用HIVE的API生成了一個JAVA的HIVE客戶端,這個客戶端和命令行的客戶端效果是同樣的。
       改參數,UDAF 都很完美的支持,我比較喜歡這個。apache

相關文章
相關標籤/搜索