转自http://ganliang13.iteye.com/blog/1736296
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:湖北咸宁