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:湖北咸宁