说实话,SpringBoot和Hive的集成还是有不少坑的,最主要的坑就是jar包冲突的问题,这个坑我这里添了我遇到的坑,我提供了源码,放在后边的链接中,以下是部分的代码。
1.上maven依赖,如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yarm</groupId>
<artifactId>Spring-Boot-Demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>Spring-Boot-Hadoop</artifactId>
<description>Hadoop相关组件</description>
<dependencies>
<dependency>
<groupId>com.yarm</groupId>
<artifactId>Spring-Boot-Base</artifactId>
<version>${spring-boot-demo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>jetty-all</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hive</groupId>
<artifactId>hive-shims</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>${spring-data-hadoop.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
2.链接hive的工具类:
package com.yarm.hadoop.hive.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class HiveUtil {
/**
*
* @Title: getCon
* @Description: TODO(获取HIVE JDBC 连接)
* @param @return 设定文件
* @return Connection 返回类型
* @throws
*/
public static Connection getCon() {
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
Connection conn = DriverManager.getConnection(
"jdbc:hive2://127.0.0.1:10000/default", "hive", "");
System.out.println("连接hive");
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
*
* @Title: getCon
* @Description: TODO(获取HIVE 指定数据库 JDBC 连接)
* @param @param database
* @param @return 设定文件
* @return Connection 返回类型
* @throws
*/
public static Connection getCon(String database) {
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
Connection conn = DriverManager.getConnection(
"jdbc:hive2://127.0.0.1:10000/" + database, "hive", "");
System.out.println("连接hive");
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
*
* @Title: close
* @Description: TODO(关闭HIVE JDBC 连接)
* @param @param stmt
* @param @param conn 设定文件
* @return void 返回类型
* @throws
*/
public static void close(Statement stmt, Connection conn){
try {
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
*
* @Title: close
* @Description: TODO(关闭HIVE JDBC 连接)
* @param @param conn 设定文件
* @return void 返回类型
* @throws
*/
public static void close(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
*
* @Title: hex2byte
* @Description: 字符串转二进制
* @param @param str
* @param @return 设定文件
* @return byte[] 返回类型
* @throws
*/
public static byte[] hex2byte(String str) { // 字符串转二进制
if (str == null)
return null;
str = str.trim();
int len = str.length();
if (len == 0 || len % 2 == 1)
return null;
byte[] b = new byte[len / 2];
try {
for (int i = 0; i < str.length(); i += 2) {
b[i / 2] = (byte) Integer.decode("0X" + str.substring(i, i + 2)).intValue();
}
return b;
} catch (Exception e) {
return null;
}
}
}
3.调用Hive工具类
这一部分我就补贴源码了,具体的可以参照我的项目。如需源码,可以留言。