通过程序查询linux环境上的hive上的表数据

前提:

linux环境ip:192.168.9.228

已经在linux环境上部署好了hadoop+hive环境,具体介绍上一篇文章有相关介绍,可以参考下,此篇主要介绍如果在本机windows环境下通过eclipse写程序连接linux服务上的hive,并进行相关查询操作

1:首先在228的linux的hive的bin目录hive --service hiveserver 50031 & 启动hive的服务端环境;


2:然后打开本机windows环境打开eclipse,新建一个工程hive,并导入hive的lib目录下的jar和hadoop目录下的jar,然后新建一个classs类HiveTestCase,代码如下:

package com.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class HiveTestCase {

   public static void main(String[] args) throws Exception {
         Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
         
         String dropSQL="drop table javabloger";
         String createSQL="create table javabloger (key int, value string) row format delimited  fields terminated by '\t'";
        //hive插入数据支持两种方式一种:load文件,令一种为从另一个表中查询进行插入(感觉这是个鸡肋)

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

        String insterSQL="LOAD DATA LOCAL INPATH '/home/yf/files/kv1.txt' OVERWRITE INTO TABLE javabloger ";
         String querySQL="SELECT a.* FROM javabloger a";
         Connection con = DriverManager.getConnection("jdbc:hive://192.168.9.228:50031/default", "", "");
         Statement stmt = con.createStatement();
         stmt.executeQuery(dropSQL);  // 执行删除语句
         stmt.executeQuery(createSQL);  // 执行建表语句
         stmt.executeQuery(insterSQL);  // 执行插入语句
         ResultSet res = stmt.executeQuery(querySQL);   // 执行查询语句
         
           while (res.next()) {
             System.out.println("Result: key:"+res.getString(1) +"  –>  value:" +res.getString(2));
         }
    }
   
}

然后在228的linux服务器上创建/home/yf/files/kv1.txt文件,并填入如下内容:

1       a
2       b
3       c
4       d

注:1列与2列数据之间以tab键隔开,然后保存。


最后在HiveTestCase类中通过右键选Run As =》Application执行,输出如下内容说明连接hive成功,并成功查询相关数据结果!

Result: key:1  –>  value:a
Result: key:2  –>  value:b
Result: key:3  –>  value:c
Result: key:4  –>  value:d


实现相关数据的录入、查询、删除操作。


注意要导入hadoop的jar包,否则会报NoClassDefFoundError: org/apache/hadoop/io/Writable异常。



你可能感兴趣的:(通过程序查询linux环境上的hive上的表数据)