您的位置:首页 > 编程语言 > Java开发

java 通过jdbc驱动连接hive操作实例

2011-11-13 11:46 681 查看
 

1,hive首先要起动远程服务接口,命令:

#
./hive --service hiveserver >/dev/null 2>/dev/null &

默认开发10000端口

在个别机器上,运行 ./hive --service hiveserver  会启动卡住。

 

2.java工程中导入相应的需求jar包,列表如下:

antlr-runtime-3.0.1.jar

hive-exec-0.7.1.jar

hive-jdbc-0.7.1.jar

hive-metastore-0.7.1.jar

hive-service-0.7.1.jar

jdo2-api-2.3-ec.jar

libfb303.jar

3,简单测试代码,已经测试成功操作

package
com.javabloger.hive;

        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)";

               //hive插入数据支持两种方式一种:load文件,令一种为从另一个表中查询进行插入(感觉这是个鸡肋) 

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

 
             String insterSQL="LOAD DATA LOCAL INPAT
4000
H '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE javabloger";

                String querySQL="SELECT a.* FROM javabloger a";

                

                Connection con = DriverManager.getConnection("jdbc:hive://192.168.X.X:10000/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));

                }

            }

        }

 

      
注意:HIVE的jdbc对中文的支持还有缺陷,获取的数据中文字符不可识别,解决办法见本人另一文章:http://blog.csdn.net/cfy_yinwenhao/article/details/6977882
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息