JAVA编写客户的调用HIVE

来源:互联网 发布:知乎戏子科学家 编辑:程序博客网 时间:2024/06/06 12:34
1.加载的文件(/home/wangwei/wangwei-software/file/a.txt)格式如下:
dk      12      1
hfd     132     99
bbN     463     231
UFD     13      10
2.工程中需要导入的jar如下:
antlr-runtime-3.0.1.jar
commons-logging-1.0.4.jar
commons-logging-api-1.0.4.jar
hadoop-0.20.2-ant.jar
hadoop-0.20.2-core.jar
hadoop-0.20.2-examples.jar
hadoop-0.20.2-test.jar
hadoop-0.20.2-tools.jar
hive-exec-0.8.1.jar
hive-jdbc-0.8.1.jar
hive-metastore-0.8.1.jar
hive-service-0.8.1.jar
hsqldb-1.8.0.10.jar
hsqldb-1.8.0.10.LICENSE.txt
jdo2-api-2.3-ec.jar
libfb303.jar
log4j-1.2.15.jar
slf4j-api-1.4.3.jar
slf4j-log4j12-1.4.3.jar
3.具体的代码实现如下:
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
       
        String dropSQL="drop table user";
        String createSQL="create table user(name string,num1 string,num2 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE";
       //hive插入数据支持两种方式一种:load文件,令一种为从另一个表中查询进行插入(感觉这是个鸡肋)

       //hive是不支持insert into...values(....)这种操作的

        String insterSQL="LOAD DATA LOCAL INPATH '/home/wangwei/wangwei-software/file/a.txt' INTO TABLE user";
        String querySQL="SELECT a.* FROM user a";
       
        Connection con = DriverManager.getConnection("jdbc:hive://192.168.197.128:50031/default", "", "");
        Statement stmt = con.createStatement();
        stmt.executeQuery(dropSQL);  // 执行删除语句
        System.out.println("删除执行完毕!");
        stmt.executeQuery(createSQL);  // 执行建表语句
        stmt.executeQuery(insterSQL);  // 执行插入语句
        ResultSet res = stmt.executeQuery(querySQL);   // 执行查询语句
       
        while (res.next()) {
            System.out.println("Result: key:"+res.getString(1) +"  –>  num1:" +res.getString(2) +"  –>  num2:" +res.getString(3));
        }
4.启动HIVE服务,测试和运行
如果出现问题查看相关日志:
http://user.qzone.qq.com/690395074/infocenter#!app=2&via=QZ.HashRefresh&pos=1341624301
http://user.qzone.qq.com/690395074/infocenter#!app=2&via=QZ.HashRefresh&pos=1341624484
http://user.qzone.qq.com/690395074/infocenter#!app=2&via=QZ.HashRefresh&pos=1341569025