hiveserver2-CDH版本客户端使用

一、简介

学习和实践Hive中,使用的都是CLI或者hive –e的方式,该方式仅允许使用HiveQL执行查询、更新等操作,并且该方式比较笨拙单一。幸好Hive提供了轻客户端的实现,通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作,两者都允许远程客户端使用多种编程语言如Java、Python向Hive提交请求,取回结果。HiveServer或者HiveServer2都是基于Thrift的,但HiveSever有时被称为Thrift server,而HiveServer2却不会。既然已经存在HiveServer为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供了更好的支持。

二、修改hive-site.xml

  
  hive.server2.thrift.port  
  10000  
  
  
  hive.server2.thrift.bind.host  
  slave1   
 

CDH中修改(应该都不需要配置CDH5.10默认都开启了)


hiveserver2-CDH版本客户端使用_第1张图片
Paste_Image.png

三、启动

CDH中已经启动,可忽略此操作

$HIVE_HOME/bin/hive --service hiveserver2 

四、测试连接

#由于没有配置密码,所以默认user为default,密码为null
[root@slave1 bin]# ./beeline 
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
Beeline version 1.1.0-cdh5.10.0 by Apache Hive
beeline> !connect jdbc:hive2://slave1:10000 -udefault
scan complete in 1ms
Connecting to jdbc:hive2://slave1:10000
Enter password for jdbc:hive2://slave1:10000: 
Connected to: Apache Hive (version 1.1.0-cdh5.10.0)
Driver: Hive JDBC (version 1.1.0-cdh5.10.0)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://slave1:10000> 
0: jdbc:hive2://slave1:10000> show databases;
INFO  : Compiling command(queryId=hive_20170414150606_500d6a49-96cc-4f52-9994-8a95830fe887): show databases
INFO  : Semantic Analysis Completed
INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:database_name, type:string, comment:from deserializer)], properties:null)
INFO  : Completed compiling command(queryId=hive_20170414150606_500d6a49-96cc-4f52-9994-8a95830fe887); Time taken: 0.004 seconds
INFO  : Executing command(queryId=hive_20170414150606_500d6a49-96cc-4f52-9994-8a95830fe887): show databases
INFO  : Starting task [Stage-0:DDL] in serial mode
INFO  : Completed executing command(queryId=hive_20170414150606_500d6a49-96cc-4f52-9994-8a95830fe887); Time taken: 0.01 seconds
INFO  : OK
+----------------+--+
| database_name  |
+----------------+--+
| cards          |
| default        |
| testsqoop      |
| tonghang       |
+----------------+--+
5 rows selected (0.1 seconds)
0: jdbc:hive2://slave1:10000> 

至此,hiveserver2搭建成功

五、客户端连接

1、pom.xml文件增加依赖

由于使用CDH版本,所以maven依赖都是依赖的cdh版本


        
            org.apache.hive
            hive-jdbc
            1.1.0-cdh5.10.0 
        
        
            org.apache.hadoop
            hadoop-core
            2.6.0-mr1-cdh5.10.0  
        
        
            org.apache.hadoop
            hadoop-common
            2.6.0-cdh5.10.0  
        

2、代码

package com.chainfin.hive;
>
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
>
public class TestConnHive {
    private static String driverName = "org.apache.hive.jdbc.HiveDriver";
>
    public static void main(String[] args) throws SQLException {
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.exit(1);
        }
        Connection conn = DriverManager.getConnection(
                "jdbc:hive2://slave1:10000/testsqoop", "default", "");
        Statement stmt = conn.createStatement();
        ResultSet res = null;
        String sql = "select * from dydata limit 1";
        res = stmt.executeQuery(sql);
        while (res.next()) {
            System.out.println(res.getString(1));
            System.out.println(res.getString(2));
            System.out.println(res.getString(3));
            System.out.println(res.getString(4));
        }
        conn.close();
    }
}
>

你可能感兴趣的:(hiveserver2-CDH版本客户端使用)