eclipse 远程操作HIVE
首先启动HiveServer
hive --service hiveserver 10000 &
创建工程
引入包:
代码(简单的查询):
package com.hive.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class HiveJDBC { public static void main(String[] args) { try { Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver"); // 查询语句 String querySQL = "SELECT * FROM t_rp"; // 链接hive Connection con = DriverManager.getConnection("jdbc:hive://192.168.0.100:10000/default", "hive", "hive"); Statement stmt = con.createStatement(); // 执行查询语句 ResultSet res = stmt.executeQuery(querySQL); while (res.next()) { System.out.println("Result: key:" + res.getString(1) + " –> value:" + res.getString(2)); } stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } }
上面是用Java连接HiveServer,而HiveServer本身存在很多问题(比如:安全性、并发性等);针对这些问题,Hive0.11.0版本提供了一个全新的服务:HiveServer2,这个很好的解决HiveServer存在的安全性、并发性等问题。这个服务启动程序在${HIVE_HOME}/bin/hiveserver2里面,你可以通过下面的方式来启动HiveServer2服务:
1
|
$HIVE_HOME/bin/hiveserver2 |
也可以通过下面的方式启动HiveServer2
1
|
$HIVE_HOME/bin/hive
--service hiveserver2 |
两种方式效果都一样的。但是以前的程序需要修改两个地方,如下所示:
privatestatic String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
改为
privatestatic String driverName = "org.apache.hive.jdbc.HiveDriver";
Connection con = DriverManager.getConnection(
"jdbc:hive://localhost:10002/default","wyp","");
改为
Connection con = DriverManager.getConnection(
"jdbc:hive2://localhost:10002/default","wyp","");
其他的不变就可以了。
这里顺便说说本程序所依赖的jar包,一共有以下几个:
hive-site.xml 文件中设置以下配置:
hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar $HIVE_HOME/lib/hive-exec-0.11.0.jar $HIVE_HOME/lib/hive-jdbc-0.11.0.jar $HIVE_HOME/lib/hive-metastore-0.11.0.jar $HIVE_HOME/lib/hive-service-0.11.0.jar $HIVE_HOME/lib/libfb303-0.9.0.jar $HIVE_HOME/lib/commons-logging-1.0.4.jar $HIVE_HOME/lib/slf4j-api-1.6.1.jar如果你是用Maven,加入以下依赖
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>0.11.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.2.0</version> </dependency>
hive-site.xml 文件中设置以下配置:
<property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>c1</value> </property>异常问题:
FAILED: RuntimeException org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:drwx------
解决:
改为root用户就行了。
版权声明:本文为博主原创文章,未经博主允许不得转载。