Hive的两种操作模式

来源:互联网 发布:淘宝店铺分析报告 编辑:程序博客网 时间:2024/05/16 12:13

Hive的客户端操作

      • Hive的客户端操作
          • 通过JDBC操作Hive
          • 通过Thrift操作Hive

通过JDBC操作Hive
  • 首先 Hive 启动远程服务

    hive --service hiveserver

  • 需要的jar包

    jar

public class TestQuery {    private static final String dirver ="org.apache.hadoop.hive.jdbc.HiveDriver";    private static final String url ="jdbc:hive://192.168.131.111:10000/default";    @Test    public void testQuery() throws Exception{        Class.forName(dirver);        String sql = "select * from emp";        Connection conn = DriverManager.getConnection(url);        Statement st = conn.createStatement();        ResultSet rs = st.executeQuery(sql);        while(rs.next()){            //不能写列名            String ename = rs.getString(2);            int sal = rs.getInt(6);            System.out.println(ename+"\t"+sal);        }        JDBCUtil.release(conn, st, rs);    }}
通过Thrift操作Hive
package com.zd.thrift;import java.util.List;import org.apache.hadoop.hive.service.HiveClient;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.protocol.TProtocol;import org.apache.thrift.transport.TSocket;import org.junit.Test;public class TestThrift {    @Test    public void testThrift() throws Exception{        //创建socket连接        TSocket socket = new TSocket("192.168.131.111",10000);        TProtocol prot = new TBinaryProtocol(socket);        //创建HiveClient        HiveClient client = new HiveClient(prot);        //打开socket通信        socket.open();        //执行HQL语句        //client.execute("desc emp");        client.execute("select * from emp where deptno=10");        //取出返回的结果        List<String> list = client.fetchAll();        //结果集以行为单位   被封装进List        for (String string : list) {            System.out.println(string);        }        socket.close();    }}
原创粉丝点击