hive jdbc连接

来源:互联网 发布:linux mkdir函数 编辑:程序博客网 时间:2024/05/01 09:47

参考官方文档:
https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC

启动hiveserver2

hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001 &

jdbc连接

import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.sql.DriverManager;public class HiveJdbcClient {    private static String driverName = "org.apache.hive.jdbc.HiveDriver";    /**     * @param args     * @throws SQLException     */    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);        }        //replace "hive" here with the name of the user the queries should run as        Connection con = DriverManager.getConnection("jdbc:hive2://ip:10001/default", "hadoop", "");        Statement stmt = con.createStatement();        String tableName = "testHiveDriverTable";        stmt.execute("drop table if exists " + tableName);        stmt.execute("create table " + tableName + " (key int, value string)");        // show tables        String sql = "show tables '" + tableName + "'";        System.out.println("Running: " + sql);        ResultSet res = stmt.executeQuery(sql);        if (res.next()) {            System.out.println(res.getString(1));        }        // describe table        sql = "describe " + tableName;        System.out.println("Running: " + sql);        res = stmt.executeQuery(sql);        while (res.next()) {            System.out.println(res.getString(1) + "\t" + res.getString(2));        }        // load data into table        // NOTE: filepath has to be local to the hive server        // NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line        String filepath = "/tmp/a.txt";        sql = "load data local inpath '" + filepath + "' into table " + tableName;        System.out.println("Running: " + sql);        stmt.execute(sql);        // select * query        sql = "select * from " + tableName;        System.out.println("Running: " + sql);        res = stmt.executeQuery(sql);        while (res.next()) {            System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));        }        // regular hive query        sql = "select count(1) from " + tableName;        System.out.println("Running: " + sql);        res = stmt.executeQuery(sql);        while (res.next()) {            System.out.println(res.getString(1));        }    }}

maven项目依赖

<dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>    <dependency>        <groupId>org.apache.hive</groupId>        <artifactId>hive-jdbc</artifactId>        <version>1.2.2</version>    </dependency>    <dependency>            <groupId>org.apache.hadoop</groupId>            <artifactId>hadoop-common</artifactId>            <version>2.6.0</version>    </dependency>  </dependencies>

a.txt文件

1   jack2   lucy3   tom4   smith

控制台打印

Running: show tables 'testHiveDriverTable'testhivedrivertableRunning: describe testHiveDriverTablekey intvalue   stringRunning: load data local inpath '/tmp/a.txt' into table testHiveDriverTableRunning: select * from testHiveDriverTable1   jack2   lucy3   tom4   smithRunning: select count(1) from testHiveDriverTable4
0 0
原创粉丝点击