Java интеграции улья JDBC

 Добавить зависимость и конфигурацию

        <зависимость> 
            <идентификатор_группы> org.springframework.boot </ идентификатор_группы> 
            <артефакта> весна-загрузка стартер веб </ артефакт> 
        </ зависимость> 
        <зависимость> 
            <идентификатор_группы> com.alibaba </ идентификатор_группы> 
            <артефакта> друид жёсткости-загрузка стартер </ артефакт> 
            <версия> 1.1.1 </ версия> 
        </ зависимость> 
        <зависимость> 
            <идентификатор_группы> org.springframework.boot </ идентификатор_группы> 
            <артефакта> весна-загрузка-стартер-JDBC < / артефакта> 
        </ зависимость> 
        <зависимость> 
            <идентификатор_группы> орг.springframework.data </ идентификатор_группы> 
            <артефакта> пружинные-данные Hadoop </ артефакт>
            <версия> 2.5.0.RELEASE </ версия> 
        </ зависимость> 
        <зависимость> 
            <идентификатор_группы> org.apache.hive </ идентификатор_группы> 
            <артефакта> улья JDBC </ артефакта> 
            <версия> 2.3.3 </ версия > 
            <исключения> 
                <исключение> 
                    <идентификатор_группы> org.eclipse.jetty.aggregate </ идентификатор_группы> 
                    <артефакт> * </ артефакт> 
                </ исключение> 
            </ исключение> 
        </ зависимость> 
        <зависимость> 
            <идентификатор_группы> org.apache .tomcat </ идентификатор_группы> 
            <артефакта> кот-JDBC </ артефакта> 
        </ зависимость> 
        <зависимость>/ зависимость> 
            <идентификатор_группы> jdk.tools </ идентификатор_группы>
            <артефакт> jdk.tools </ артефакт> 
            <версия> 1.8 </ версия> 
            <сфера> система </ сфера> 
            <SystemPath> $ {JAVA_HOME} /lib/tools.jar </ SystemPath> 
        </ зависимость>
// свойства文件中улей配置

#hive 
hive.url = jdbc.hive2 // 10.76.148.15:8183/hive 
hive.driver- класс -name = org.apache.hive.jdbc.HiveDriver 
hive.user = корень 
hive.password = корень
источник данных конфигурации JdbcTemplate

  Мы можем использовать org.apache.tomcat.jdbc.pool.DataSource SpringBoot источники данных, источник данных по умолчанию и использовать его, чтобы собрать JdbcTemplate.

импорт com.didichuxing.fe.offline.util.ConfigPropertyUtil;
импорт org.apache.tomcat.jdbc.pool.DataSource;
импорт org.slf4j.Logger;
импорт org.slf4j.LoggerFactory;
импорт org.springframework.jdbc.core.JdbcTemplate;
импорт java.util.ArrayList;
импорт java.util.List; 

общественный  класс HiveConfig {
     частный  статический  окончательный Logger Регистратор = LoggerFactory.getLogger (HiveConfig. класс ); 

    частный  статический  летучий HiveConfig конфигурации = NULL ;
    частный  статическийConfigPropertyUtil propertyUtil = ConfigPropertyUtil.getInstance ( "hiveConfig.properties" );
    частный DataSource DataSource = NULL ;
    частный JdbcTemplate JdbcTemplate = NULL ;
    частный List <String> sparkTableNameList = NULL ;
    общественности  статической HiveConfig деЫпзЬапса () {
         если (== конфигурация нуль ) {
             синхронизирована (HiveConfig. класс ) {
                 если (== конфигурация нуль ) { 
                    конфиг = новый HiveConfig ();
                } 
            } 
        } 
        Возврата конфигурации; 
    } 
    Частная HiveConfig () { 
        INIT (); 
    } 

    Частный  недействительный Init () { 
        DataSource = новый DataSource () { 
            { 
                попытка { 
                    setUrl (propertyUtil.getPropertyVal ( "hive.url" )); 
                    setDriverClassName (propertyUtil.getPropertyVal ( "имя-hive.driver-класс" )); 
                    setUsername (propertyUtil.getPropertyVal ( "hive.user" ));
                    SetPassword (propertyUtil.getPropertyVal ( "hive.password" )); 
                    logger.info ( "Улей数据源Datasource初始化完成" ); 
                } Задвижка (Исключение е) { 
                    logger.error (e.getMessage ()); 
                } 
            } 
        }; 
        JdbcTemplate = новый JdbcTemplate (DataSource); 
    } 
    Общественного DataSource GetDataSource () {
         вернуть Datasource; 
    } 

    Общественного JdbcTemplate getJdbcTemplate () {
         вернуть JdbcTemplate; 
    } 
}

Sql заявление Операция выполнения улей улей

импорт com.didichuxing.fe.offline.config.HiveConfig;
импорт com.didichuxing.fe.offline.entity.TableInfo;
импорт com.didichuxing.fe.offline.util.DateUtil;
импорт com.didichuxing.fe.offline.util.ParquetShema;
импорт com.didichuxing.fe.offline.util.SparkTool;
импорт org.apache.hadoop.conf.Configuration;
импорт org.apache.spark.sql.Dataset;
импорт org.apache.spark.sql.Row;
импорт org.apache.spark.sql.SparkSession;
импорт org.apache.tomcat.jdbc.pool.DataSource;
импорт org.slf4j.Logger;
импорт org.slf4j.LoggerFactory;
импортorg.springframework.dao.DataAccessException;
импорт org.springframework.jdbc.core.JdbcTemplate;
импорт org.apache.hadoop.fs.Path;
импорт java.nio.file.Paths;
импорт java.sql.ResultSet;
импорт java.sql.SQLException;
импорт java.sql.Statement;
импорт java.util.ArrayList;
импорт java.util.List; 

общественный  класс HiveJdbcDao {
     частный  статический  окончательный Logger Регистратор = (Logger) LoggerFactory.getLogger (HiveJdbcDao. класс );
    частный  статический HiveJdbcDao hiveJdbcDao = нуль;
    общественности  статической HiveJdbcDao деЫпзЬапсе () {
         если (hiveJdbcDao == NULL ) {
             синхронизирована (MysqlBaseDao. класс ) {
                 если (hiveJdbcDao == NULL ) { 
                    hiveJdbcDao = новый HiveJdbcDao (); 
                } 
            } 
        } 
        Вернуть hiveJdbcDao; 
    } 
    Частная HiveJdbcDao () { 
    } 

    частное DataSource jdbcDataSource = HiveConfig.getInstance () GetDataSource ().
    частныйJdbcTemplate hiveJdbcTemplate = HiveConfig.getInstance () getJdbcTemplate (). 

    / ** 
     *查询улей表中字段名以及类型
     * @param abstractSql 
     * @return 
     * @throws SQLException
      * / 
    общественного List <TableInfo> selectTableInfoFromHive (String abstractSql) { 
        Список <TableInfo> tableInfoList = новый ArrayList <TableInfo> (); 
        TableInfo tableInfo = новый TableInfo (); 
        Заявление Заявление = NULL ; 
        logger.info ( "Запуск SQL:" +abstractSql);
        попробуйте { 
            оператор = jdbcDataSource.getConnection () createStatement (). 
            ResultSet Рез = statement.executeQuery (abstractSql);
            в то время как (res.next ()) { 
                tableInfo.setColumnName (res.getString ( 1 )); 
                tableInfo.setColumnType (res.getString ( 2 )); 
                tableInfo.setColumnComment (res.getString ( 3 )); 
                tableInfoList.add (tableInfo); 
            } 
        } Поймать (SQLException е) {  
            logger.info (e.getMessage ());
        } 

        возвратаtableInfoList; 
    } 

    / ** 
     *查询улей库中表名
     * @param abstractSql 
     * @return 
     * @throws SQLException
      * / 
    публичный List <String> selectTableNameFromHive (String abstractSql) { 
        Список <String> tableNameList = новый ArrayList <String> (); 
        Заявление Заявление = NULL ; 
        logger.info ( "Запуск SQL:" + abstractSql);
        попробуйте { 
            оператор = jdbcDataSource.getConnection () createStatement (). 
            результирующего РЭС = Statement.executeQuery (abstractSql); 
            logger.error ( "Улей таблицы String []:" + res.toString ());
             это время (res.next ()) { 
                tableNameList.add (res.getString ( 1. )); 
            } 
        } улов (SQLException Е) { 
            logger.info (e.getMessage ()); 
        } 
        возвращение   tableNameList; 
    } 

    / ** 
     * автоматически загружается в локальных данных из улья 
     * @param путь_к_файлу
      * / 
    общественного  недействительнымиloadIntoHiveTable (String FilePath, строка таблицы) { 
        Строка dateFileFormat = DateUtil.getYesterdayFileFormat (); 
        Строка [] dateSplit = dateFileFormat.split ( "/" ); 
        StringBuffer buildSql = новый StringBuffer (); 
        buildSql.append ( "нагрузка inpath данные") .append ( "\"). Append (путь_к_файл) .append ( "\" ) 
                .append ( "в таблице ф."). Append (TABLENAME) .append (» раздел (год = " ) 
                .append (dateSplit [ 0]). Append (" месяц = ") .append (dateSplit [1 ]) 
                .append ( ",        Строка SQL = "inpath загрузки данных" + "\ '+ путь_к_файл +" \' +
 //                 "в таблице ф". + TABLENAME + "раздел (год =" + dateSplit [0] + "месяц = "
 //                 + dateSplit [1] +", день =" + dateSplit [2] + ")"; 
        logger.info ( "将数据加载进入улей表的SQL: {}" , buildSql.toString ());
        попробуйте { 
            hiveJdbcTemplate.execute (buildSql.toString ()); 
        } Задвижка (DataAccessException Тэ) { 
            logger.error (dae.toString ());

    
    общественного недействительный updateHiveTable (String abstractSql) {
         попытка { 
            hiveJdbcTemplate.execute (abstractSql); 
        } Задвижка (DataAccessException Тэ) { 
            logger.error (dae.toString ()); 
        } 
    } 
    
}

 

 

Ссылка: https://blog.csdn.net/pengjunlee/article/details/81838480# просмотра Улей таблицы C2% A0% C2% A0%   (он springboot интеграция улей)

рекомендация

отwww.cnblogs.com/yangcao/p/12073117.html