Apache Hive 系列文章
1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解
2、hive相关概念详解–架构、读写文件机制、数据存储
3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表
4、hive的使用示例详解-事务表、视图、物化视图、DDL(数据库、表以及分区)管理详细操作
5、hive的load、insert、事务表使用详解及示例
6、hive的select(GROUP BY、ORDER BY、CLUSTER BY、SORT BY、LIMIT、union、CTE)、join使用详解及示例
7、hive shell客户端与属性配置、内置运算符、函数(内置运算符与自定义UDF运算符)
8、hive的关系运算、逻辑预算、数学运算、数值运算、日期函数、条件函数和字符串函数的语法与使用示例详解
9、hive的explode、Lateral View侧视图、聚合函数、窗口函数、抽样函数使用详解
10、hive综合示例:数据多分隔符(正则RegexSerDe)、url解析、行列转换常用函数(case when、union、concat和explode)详细使用示例
11、hive综合应用示例:json解析、窗口函数应用(连续登录、级联累加、topN)、拉链表应用
12、Hive优化-文件存储格式和压缩格式优化与job执行优化(执行计划、MR属性、join、优化器、谓词下推和数据倾斜优化)详细介绍及示例
13、java api访问hive操作示例
文章目录
本文仅仅介绍通过java api访问hive的数据。
本文依赖hive环境可用,特别是HiveServer2。
本文比较简单,仅仅为示例。
一、pom.xml
<dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>3.1.2</version></dependency>
二、java 类
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importlombok.extern.slf4j.Slf4j;/**
* JDBC 操作 Hive
*
*/@Slf4jpublicclassApp{privatestaticString driverName ="org.apache.hive.jdbc.HiveDriver";privatestaticString url ="jdbc:hive2://server4:10000/default";// default 是默認數據庫名稱privatestaticString user ="alanchan";// hadoop中可以訪問hdfs的用戶privatestaticString password ="123456";// 該用戶的密碼privatestaticConnection conn =null;privatestaticStatement stmt =null;privatestaticResultSet rs =null;@Beforepublicvoidinit()throwsException{Class.forName(driverName);
conn =DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();}// 创建数据库@TestpublicvoidcreateDatabase()throwsException{String sql ="create database test";
log.info("sql:{}", sql);
stmt.execute(sql);}// 查询所有数据库@TestpublicvoidshowDatabases()throwsException{String sql ="show databases";
log.info("sql:{}", sql);
rs = stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getString(1));}}// 创建表@TestpublicvoidcreateTable()throwsException{String sql ="create table test (id int ,name string) row format delimited fields terminated by '\\t' ";
log.info("sql:{}", sql);
stmt.execute(sql);}// 查询所有表@TestpublicvoidshowTables()throwsException{String sql ="show tables";
log.info("sql:{}", sql);
rs = stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getString(1));}}// 查看表结构@TestpublicvoiddescTable()throwsException{String sql ="desc emp";
log.info("sql:{}", sql);
rs = stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getString(1)+"\t"+ rs.getString(2));}}// 加载数据@TestpublicvoidloadData()throwsException{String filePath ="/home/hadoop/data/emp.txt";String sql ="load data local inpath '"+ filePath +"' overwrite into table test";
log.info("sql:{}", sql);
stmt.execute(sql);}// 查询数据@TestpublicvoidselectData()throwsException{String sql ="select * from test";
log.info("sql:{}", sql);
rs = stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt("id")+"\t\t"+ rs.getString("name"));}}// 统计查询(会运行mapreduce作业)@TestpublicvoidcountData()throwsException{String sql ="select count(1) from test";
log.info("sql:{}", sql);
rs = stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt(1));}}// 删除数据库@TestpublicvoiddropDatabase()throwsException{String sql ="drop database if exists test";
log.info("sql:{}", sql);
stmt.execute(sql);}// 删除数据库表@TestpublicvoiddeopTable()throwsException{String sql ="drop table if exists test";
log.info("sql:{}", sql);
stmt.execute(sql);}// 释放资源@Afterpublicvoiddestory()throwsException{if(rs !=null){
rs.close();}if(stmt !=null){
stmt.close();}if(conn !=null){
conn.close();}}}
版权归原作者 一瓢一瓢的饮 alanchan 所有, 如有侵权,请联系我们删除。