SpringBoot和hadoop组件Hive的集成(填坑)

说实话,SpringBoot和Hive的集成还是有不少坑的,最主要的坑就是jar包冲突的问题,这个坑我这里添了我遇到的坑,我提供了源码,放在后边的链接中,以下是部分的代码。

1.上maven依赖,如下:


  4.0.0
  
    com.yarm
    Spring-Boot-Demo
    1.0.0-SNAPSHOT
  
  Spring-Boot-Hadoop
  Hadoop相关组件

 
   	
	    com.yarm
	  	Spring-Boot-Base
  		${spring-boot-demo.version}
  	
    
        org.apache.hive
        hive-jdbc
        1.1.0
        
				
					org.eclipse.jetty.aggregate
					jetty-all
				
				
					org.apache.hive
					hive-shims
				
				
	                 org.apache.logging.log4j
	                 log4j-slf4j-impl
                
                
	                 org.slf4j
	                 slf4j-log4j12
                
		
    
    
	       org.apache.thrift
	       libthrift
	       0.9.1
    
      
	 
		org.springframework.data
		spring-data-hadoop
		${spring-data-hadoop.version}
		
                
					javax.servlet
					servlet-api
			    
		
	  
  

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工具类

这一部分我就补贴源码了,具体的可以参照我的项目。如需源码,可以留言。

你可能感兴趣的:(Hadoop,Hive)