首先启动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用户就行了。
版权声明:本文为博主原创文章,未经博主允许不得转载。