欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 利用jdbc连接hive查询示例

程序员文章站 2022-03-31 16:51:11
...

1.千万记得执行这个命令bin/hive --service hiveserver >/dev/null 2>/dev/null &,

否则就会出现hive ,Connection refuse 的异常。

 

2.加入包,我这里的环境是hadoop1.01,hive0.8.1

 

antlr-runtime-3.0.1.jar

commons-logging-api-1.0.4.jar

hadoop-core-1.0.1.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

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.代码

 

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 INPATH '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE javabloger";
		String querySQL = "SELECT name,address FROM people_test a";

		Connection con = DriverManager.getConnection(
				"jdbc:hive://localhost:10000/default", "root", "****");
		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));
		}
	}
}

 

4.运行结果
Result: key:阿里马马  –>  value:北京海淀西四环
Result: key:甘亮  –>  value:湖北咸宁