Добавить зависимость и конфигурацию
<зависимость> <идентификатор_группы> 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 интеграция улей)