Hadoop版本:hadoop-2.9.2.tar.gz,Hive版本:apache-hive-2.3.6-src.tar.gz,安装Hive可查看:CentOS安装Hive

保证Hive以正确启动hiveserver2。

pom.xml依赖:

<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><groupId>com.zhi.test</groupId><artifactId>hive-test</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>hive-test</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- Logger --><lg4j2.version>2.12.1</lg4j2.version></properties><dependencies><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>2.3.6</version><exclusions><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency><!-- Logger(log4j2) --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${lg4j2.version}</version></dependency><!-- Log4j 1.x API Bridge --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-1.2-api</artifactId><version>${lg4j2.version}</version></dependency><!-- SLF4J Bridge --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${lg4j2.version}</version></dependency><dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.8</version><scope>system</scope><systemPath>D:\Program Files\Java\jdk1.8.0_191\lib/tools.jar</systemPath></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.5.2</version></dependency></dependencies>
</project>

Java代码:

package com.zhi.test.hive;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.TestInstance.Lifecycle;/*** 使用JDBC进行Hive操作* * @author zhi* @since 2019年9月11日11:55:00**/
@TestInstance(Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class HiveTest {private final Logger logger = LogManager.getLogger(this.getClass());private static Connection connection = null;@BeforeAllpublic void init() throws Exception {try {Class.forName("org.apache.hive.jdbc.HiveDriver");connection = DriverManager.getConnection("jdbc:hive2://192.168.107.143:10000/test_db", "root", "abc123");} catch (SQLException | ClassNotFoundException e) {logger.error("创建Hive连接失败", e);throw e;}}@AfterAllpublic void destory() throws Exception {if (connection != null) {connection.close();}}/*** 创建数据库*/@Order(1)@Testpublic void createDatabase() {String sql = "create database test_db";logger.info("创建数据库,脚本:{}", sql);try (Statement statement = connection.createStatement()) {statement.execute(sql);logger.info("创建数据库成功");} catch (SQLException e) {logger.error("创建数据库出错", e);}}/*** 查询数据库*/@Order(2)@Testpublic void showDatabases() {String sql = "show databases";logger.info("查询数据库,脚本:{}", sql);try (Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql)) {while (rs.next()) {logger.info("查询到数据库:{}", rs.getString(1));}} catch (SQLException e) {logger.error("创建数据库出错", e);}}/*** 创建表*/@Order(3)@Testpublic void createTable() {String sql = "create table user_tb(id int, name string) row format delimited fields terminated by ','";logger.info("创建表,脚本:{}", sql);try (Statement statement = connection.createStatement()) {statement.execute(sql);logger.info("创建表成功");} catch (SQLException e) {logger.error("创建表出错", e);}}/*** 查询所有表*/@Order(3)@Testpublic void showTables() {String sql = "show tables";logger.info("查询所有表,脚本:{}", sql);try (Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql)) {while (rs.next()) {logger.info("查询到表:{}", rs.getString(1));}} catch (SQLException e) {logger.error("查询所有表出错", e);}}/*** 查看表结构*/@Order(4)@Testpublic void descTable() {String sql = "desc user_tb";logger.info("查看表结构,脚本:{}", sql);try (Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql)) {while (rs.next()) {logger.info("字段名:{},类型:{}", rs.getString(1), rs.getString(2));}} catch (SQLException e) {logger.error("查看表结构出错", e);}}/*** 导入数据,data.txt中的数据为格式为:<br>* 1,张三<br>* 2,李四*/@Order(5)@Testpublic void loadData() {String sql = "load data local inpath '/home/data.txt' overwrite into table user_tb";logger.info("导入数据,脚本:{}", sql);try (Statement statement = connection.createStatement()) {statement.execute(sql);logger.info("导入数据成功");} catch (SQLException e) {logger.error("导入数据出错", e);}}/*** 查询数据*/@Order(6)@Testpublic void selectData() {String sql = "select * from user_tb";logger.info("查询数据,脚本:{}", sql);try (Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql)) {while (rs.next()) {logger.info("id={},name={}", rs.getInt("id"), rs.getString("name"));}} catch (SQLException e) {logger.error("查询数据出错", e);}}/*** 查数量*/@Order(7)@Testpublic void count() {String sql = "select count(1) from user_tb";logger.info("查数量,脚本:{}", sql);try (Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql)) {while (rs.next()) {logger.info("数量={}", rs.getInt(1));}} catch (SQLException e) {logger.error("查数量出错", e);}}/*** 删除表*/@Order(8)@Testpublic void deopTable() {String sql = "drop table if exists user_tb";logger.info("删除表,脚本:{}", sql);try (Statement statement = connection.createStatement()) {statement.execute(sql);logger.info("删除表成功");} catch (SQLException e) {logger.error("删除表出错", e);}}/*** 删除数据库*/@Order(9)@Testpublic void dropDatabase() {String sql = "drop database if exists test_db";logger.info("删除数据库,脚本:{}", sql);try (Statement statement = connection.createStatement()) {statement.execute(sql);logger.info("删除数据库成功");} catch (SQLException e) {logger.error("删除数据库出错", e);}}
}

代码执行结果:

2019-09-11 22:05:52.324 [main] INFO  org.apache.hive.jdbc.Utils.parseURL 325 - Supplied authorities: 192.168.107.143:10000
2019-09-11 22:05:52.334 [main] INFO  org.apache.hive.jdbc.Utils.parseURL 444 - Resolved authority: 192.168.107.143:10000
2019-09-11 22:05:52.772 [main] INFO  com.zhi.test.hive.HiveTest.createDatabase 58 - 创建数据库,脚本:create database test_db
2019-09-11 22:05:53.098 [main] INFO  com.zhi.test.hive.HiveTest.createDatabase 61 - 创建数据库成功
2019-09-11 22:05:53.131 [main] INFO  com.zhi.test.hive.HiveTest.showDatabases 74 - 查询数据库,脚本:show databases
2019-09-11 22:05:53.332 [main] INFO  com.zhi.test.hive.HiveTest.showDatabases 77 - 查询到数据库:default
2019-09-11 22:05:53.332 [main] INFO  com.zhi.test.hive.HiveTest.showDatabases 77 - 查询到数据库:test_db
2019-09-11 22:05:53.347 [main] INFO  com.zhi.test.hive.HiveTest.createTable 91 - 创建表,脚本:create table user_tb(id int, name string) row format delimited fields terminated by ','
2019-09-11 22:05:53.623 [main] INFO  com.zhi.test.hive.HiveTest.createTable 94 - 创建表成功
2019-09-11 22:05:53.644 [main] INFO  com.zhi.test.hive.HiveTest.showTables 107 - 查询所有表,脚本:show tables
2019-09-11 22:05:53.784 [main] INFO  com.zhi.test.hive.HiveTest.showTables 110 - 查询到表:user_tb
2019-09-11 22:05:53.784 [main] INFO  com.zhi.test.hive.HiveTest.showTables 110 - 查询到表:usertest_tb
2019-09-11 22:05:53.806 [main] INFO  com.zhi.test.hive.HiveTest.descTable 124 - 查看表结构,脚本:desc user_tb
2019-09-11 22:05:53.971 [main] INFO  com.zhi.test.hive.HiveTest.descTable 127 - 字段名:id,类型:int
2019-09-11 22:05:53.971 [main] INFO  com.zhi.test.hive.HiveTest.descTable 127 - 字段名:name,类型:string
2019-09-11 22:05:53.987 [main] INFO  com.zhi.test.hive.HiveTest.loadData 143 - 导入数据,脚本:load data local inpath '/home/data.txt' overwrite into table user_tb
2019-09-11 22:05:55.106 [main] INFO  com.zhi.test.hive.HiveTest.loadData 146 - 导入数据成功
2019-09-11 22:05:55.119 [main] INFO  com.zhi.test.hive.HiveTest.selectData 159 - 查询数据,脚本:select * from user_tb
2019-09-11 22:05:55.870 [main] INFO  com.zhi.test.hive.HiveTest.selectData 162 - id=1,name=张三
2019-09-11 22:05:55.871 [main] INFO  com.zhi.test.hive.HiveTest.selectData 162 - id=2,name=李四
2019-09-11 22:05:55.890 [main] INFO  com.zhi.test.hive.HiveTest.count 176 - 查数量,脚本:select count(1) from user_tb
2019-09-11 22:05:57.952 [main] INFO  com.zhi.test.hive.HiveTest.count 179 - 数量=2
2019-09-11 22:05:57.983 [main] INFO  com.zhi.test.hive.HiveTest.deopTable 193 - 删除表,脚本:drop table if exists user_tb
2019-09-11 22:05:58.256 [main] INFO  com.zhi.test.hive.HiveTest.deopTable 196 - 删除表成功
2019-09-11 22:05:58.268 [main] INFO  com.zhi.test.hive.HiveTest.dropDatabase 209 - 删除数据库,脚本:drop database if exists test_db
2019-09-11 22:05:58.494 [main] INFO  com.zhi.test.hive.HiveTest.dropDatabase 212 - 删除数据库成功

转载于:https://www.cnblogs.com/zhi-leaf/p/11509186.html

Java操作Hive相关推荐

  1. Hive的安装和使用以及Java操作hive

    Hive 引言 简介 hive是facebook开源,并捐献给了apache组织,作为apache组织的顶级项目(hive.apache.org). hive是一个基于大数据技术的数据仓库(DataW ...

  2. java hive建表_java jdbc 操作 hive 建表 load 数据

    // 需要引入 hadoop & hive jar import java.sql.Connection; import java.sql.DriverManager; import java ...

  3. SparkSQL操作Hive Table

    Spark SQL支持对Hive的读写操作.然而因为Hive有很多依赖包,所以这些依赖包没有包含在默认的Spark包里面.如果Hive依赖的包能在classpath找到,Spark将会自动加载它们.需 ...

  4. Spark SQL操作Hive表

    Spark SQL支持从Hive存储中读写数据.然而,Hive存在很多的依赖,而这些依赖又不包含在默认的各类Spark发型版本中.如果将Hive的依赖放入classpath中,Spark将自动加载它们 ...

  5. sqoop的java操作,总结归纳,含代码

    (下面说的操作hdfs其实和操作hive意思一样,都是文件夹) 最近要在项目中加一个sqoop的功能,需求是将hive的数据导入至mysql,也就是export功能 由于之前没用过sqoop,所以特地 ...

  6. Hive学习(三)操作Hive的方式及优化

    Hive 一.操作Hive的两种方式 1.通过Beenline 2.通过JDBC 二.Hive的优化 1.Hive优化的思想: 2.优化的方式 (1)开启本地模式 (2)开启并行计算 (3)严格模式 ...

  7. 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive

    第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive ...

  8. JDBC操作Hive出现的错误

    上一篇咱们说到用JDBC去操作Hive,这篇文章主要是将其中由于未添加某个jar包导致的错误罗列出来. 基本的错误都是没找到类:java.lang.ClassNotFoundException,只是出 ...

  9. 使用Java编写Hive的UDF实现身份证号码校验及15位升级18位

    使用Java编写Hive的UDF实现身份证号码校验及15位升级18位 背景 在数仓项目中,有时候会根据身份证信息做一些取数filter或者条件判断的相关运算进而获取到所需的信息.古人是用Oracle做 ...

最新文章

  1. pycharm一键调整代码格式(快捷键)
  2. LAMP的安装配置过程:
  3. 1024x600 7 LVDS LCD with Capacitive Touch for pcD
  4. c++ array方法
  5. Eclipse 设置自动导包
  6. 交易系统高并发下的幂等性设计原则
  7. Android 中的adapter和作用以及常见的adapter
  8. 从0开始html前端页面开发_HTML各标签介绍
  9. 使用纯生js实现图片轮换
  10. Silverlight 操作Excel 中的进程资源释放问题(续)
  11. logisim软件简单入门使用
  12. UltraEdit(ue记事本)科学免费激活使用教程【你懂得,亲测有效】
  13. zebra扫码枪复位_条码扫描枪设置使用说明详解
  14. 取文件操作fopen(file open)
  15. Python中的变量
  16. hdf heg 批量拼接_MODIS数据处理新工具(HDF-EOS To GeoTIFF Conversion Tool,HEG_2.15)官方使用说明...
  17. Android wms粗略介绍
  18. Python列表去重的几种方法和实例
  19. 什么是数据实时同步,为什么数据实时同步很重要
  20. JAVA构造函数存取款,C语言如何实现ATM机存取款系统

热门文章

  1. php curl显示错误信息,php如何调试curl错误信息
  2. jpa 托管_JPA EntityManager详解(一)
  3. datagridview 排序后 选择不变_排序算法之插入排序
  4. uniapp 表单提交图片跟其他填写数据_记录第一次实现表单数据提交到数据库
  5. window 后台启动java参数启动
  6. Kotlin入门(11)江湖绝技之特殊函数
  7. oracle双重for循环sql,Oracle 11g中for循环中的PL / SQL限制
  8. MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》...
  9. 《C++ Primer Plus》读书笔记之七—内存模型和名称空间
  10. 大数据测试之hadoop单机环境搭建(超级详细版)