Hive教程(08)- JDBC操作Hive
文章目录
- 01 引言
- 02 开发前准备
- 2.1 步骤1:环境启动
- 2.2 步骤2:创建数据库
- 03 项目搭建
- 3.1 步骤1:新建maven项目
- 3.2 步骤2:创建hive连接工具类
- 04 Hive单元测试
- 4.1 创建表
- 4.2 导入数据
- 4.3 查看数据
- 05 文末
01 引言
本文的代码已上传至GitHub,有兴趣的同学可以参阅:https://github.com/ylw-github/java-hive-demo
在前面的教程,已经初步入门hive
了,有兴趣的同学可以参阅:
- 《Hive教程(01)- 初识Hive》
- 《Hive教程(02)- Hive安装》
- 《Hive教程(03)- Hive数据模型》
- 《Hive教程(04)- Hive数据类型》
- 《Hive教程(05)- Hive命令汇总》
- 《Hive教程(06)- Hive SerDe序列化与反序列化》
- 《Hive教程(07)- Hive自定义用户名密码验证(已开源)》
程序员最终还是要回归到代码的,所以接下来主要讲解使用jdbc
来操作hive
。
02 开发前准备
2.1 步骤1:环境启动
阅读过前面几篇博客的,可以直接跳过
开发前需要先启动hadoop
以及hiveserver
,同时也要设置hive
的用户名和密码,具体的操作可以参考:《Hive教程(07)- Hive自定义用户名密码验证(已开源)》
2.2 步骤2:创建数据库
使用beeline
登录:
beeline
!connect jdbc:hive2://localhost:10001
执行创建数据库语句:
create database if not exists company_db;
use company_db;
在DBeaver
也能看到company_db
创建成功:
备注:如果是mac
系统,安装DBeaver
的教程可以参考之前写的博客《Mac下安装DBeaver》。
03 项目搭建
3.1 步骤1:新建maven项目
IDEA
新建java-hive-demo
项目,配置pom.xml
内容如下(其实就只添加了hive-jdbc
依赖):
<?xml version="1.0" encoding="UTF-8"?>
<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.ylw</groupId><artifactId>java-hive-demo</artifactId><version>1.0.0</version><packaging>jar</packaging><developers><developer><name>Yang Lin Wei</name><url>https://yanglinwei.blog.csdn.net/</url></developer></developers><dependencies><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>2.3.3</version><exclusions><exclusion><groupId>org.eclipse.jetty.aggregate</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency></dependencies></project>
3.2 步骤2:创建hive连接工具类
首先定义常量(Const.java
):
package com.ylw.constant;/*** 常量定义** @author : YangLinWei* @createTime: 2022/2/23 9:23 上午*/
public interface Const {/*** hive服务器地址 **/String HIVE_DB_URL = "jdbc:hive2://127.0.0.1:10001/company_db";/*** hive登录账号 **/String USER_NAME = "root";/*** hive登录密码 **/String PASSWORD = "123";
}
然后定义hive
连接工具类:
package com.ylw.util;import com.ylw.constant.Const;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;/*** Hive连接工具类** @author : YangLinWei* @createTime: 2022/2/23 9:22 上午*/
public class HiveConnect {private static Connection connection = null;/*** 获取hive连接单例** @return hive连接单例*/public static Connection getConnection() {if (null == connection) {synchronized (HiveConnect.class) {if (null == connection) {try {Class.forName("org.apache.hive.jdbc.HiveDriver");HiveConnect.connection = DriverManager.getConnection(Const.HIVE_DB_URL, Const.USER_NAME, Const.PASSWORD);} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}}}return connection;}
}
ok
,项目基本搭建完成了,现在可以做jdbc
的测试了。
04 Hive单元测试
单元测试工具类在HiveTest.java
。
4.1 创建表
先贴出创建表的方法:
public static boolean createEmployeeTable() throws SQLException {String sql = "CREATE TABLE IF NOT EXISTS " +"employee(name string," +"work_place array<string>," +"sex_age struct<sex:string, age:int>," +"score map<string, int>," +"depart_title map<string, string>) " +"row format delimited " +"fields terminated by '|' " +"collection items terminated by ',' " +"map keys terminated by ':'" +"lines terminated by '\n' " +"stored as textfile";Statement statement = HiveConnect.getConnection().createStatement();return statement.execute(sql);
}
执行完成后,在Dbeaver
可以看到建表成功:
4.2 导入数据
本地新建数据employee.txt
文件,内容如下:
Michael|Montreal,Toronto|Male,30|DB:80|Product:Developer
Will|Montreal|Male,35|Perl:85|Product:Lead,Test:Lead
Shelley|New York|Female,27|Python:80|Test:Lead,COE:Architect
Lucy|Vancouver|Female,57|Sales:89,HR:94|Sales:Lead
执行导入代码:
public static boolean loadData() throws SQLException {String loadSql = "load data local inpath '本地路径/employ.txt' into table employee";Statement statement = HiveConnect.getConnection().createStatement();return statement.execute(loadSql);}
DBeaver
可以看到导入成功:
4.3 查看数据
执行sql查询,代码如下:
public static void query() throws SQLException {String sql = "select name ,work_place[0] from employee";PreparedStatement pstm = HiveConnect.getConnection().prepareStatement(sql);ResultSet rs = pstm.executeQuery(sql);while (rs.next()) {System.out.println(rs.getString(1) + " " + rs.getString(2));}pstm.close();rs.close();
}
可以看到控制台有数据打印:
05 文末
本文的代码已上传至GitHub,有兴趣的同学可以参阅:https://github.com/ylw-github/java-hive-demo,本文完!
Hive教程(08)- JDBC操作Hive相关推荐
- 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive
第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive ...
- java hive建表_java jdbc 操作 hive 建表 load 数据
// 需要引入 hadoop & hive jar import java.sql.Connection; import java.sql.DriverManager; import java ...
- Hive教程(04)- Hive数据类型
文章目录 01 引言 02 hive数据类型 2.1 基础类型 2.1.1 整型 2.1.2 浮点型 2.1.3 文本型 2.1.4 布尔及二进制 2.1.5 时间类型 2.2 复杂类型 2.2.1 ...
- Java通过JDBC操作Hive
http://www.cnblogs.com/netbloomy/p/6688670.html 0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hiv ...
- JDBC操作Hive出现的错误
上一篇咱们说到用JDBC去操作Hive,这篇文章主要是将其中由于未添加某个jar包导致的错误罗列出来. 基本的错误都是没找到类:java.lang.ClassNotFoundException,只是出 ...
- Hive教程(一)---hive入门
目录 1.1什么是Hive 1.2 Hive的优缺点 1.3 Hive架构原理 1.4 Hive和数据库比较 1.5 Meta store数据库分析 1.1什么是Hive Hive:由Facebook ...
- Hive记录-Impala jdbc连接hive和kudu参考
1.配置环境Eclipse和JDK 2.加载hive jar包或者impala jar包 备注:从CDH集群里面拷贝出来 下载地址:https://www.cloudera.com/downloads ...
- Hive编程指南-Spark操作Hive
摘要:本文将要说明如何使用Spark来对Hive进行操作 1.打jar包,提交Spark任务 通过提交spark任务的方式,如下面的scala代码.之后需要将成代码打包成一个jar包,然后提交到spa ...
- Hive的两种操作模式
Hive的客户端操作 Hive的客户端操作 通过JDBC操作Hive 通过Thrift操作Hive 通过JDBC操作Hive 首先 Hive 启动远程服务 hive --service hiveser ...
- Hive的安装和使用以及Java操作hive
Hive 引言 简介 hive是facebook开源,并捐献给了apache组织,作为apache组织的顶级项目(hive.apache.org). hive是一个基于大数据技术的数据仓库(DataW ...
最新文章
- Nature:梁冠翔等发现肠道病毒组在新生儿体内分段寄生的模式
- 2015.7.13 第五课 课程重点(z-index、overflow、浏览器兼容性)
- 手把手实现YOLOv3(一)
- leetcode 230. Kth Smallest Element in a BST | 230. 二叉搜索树中第K小的元素(Java)
- 将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)
- HTTP管线化(HTTP pipelining)
- LeetCode 1775. 通过最少操作次数使数组的和相等(贪心+双指针)
- java文件编码格式环境变量_Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8...
- Toolbar详解 · Material Design Part 2
- 技术前沿:分布式缓存Redis Cluster在华泰证券的探索与实践
- 用mplfinance库定制A股常用的K线、均线图
- amazon php 空间,如何将PHP图像资源放入Amazon Web Services?
- python用蓝牙发文件_用pybluez进行python蓝牙发现
- Unbuntu 出现无法解析或打开软件包的列表或是状态文件的解决办法
- 在CSDN的博文中如何添加博主名片
- Camera成像中的Demosaic
- SnowNLP简易教程:分词、词性标注、情感分析、繁体转换、关键字抽取、相似度计算
- Word2016以上版本兼容模式不能使用公式编辑器的解决办法
- 对文件生成MD5文件配置表
- 5.19 对学生按姓名进行随机排序 [原创Excel教程]
热门文章
- AlphaGo Zero 强化学习算法原理深度分析
- 网络安全中常见攻击方式(SQL注入、XSS攻击、CSRF攻击、网页木马、文件包含漏洞攻击、目录遍历攻击、CC攻击、DOS攻击)
- [转贴]九大职业之一了百了[启示录]
- 计算机网络英语词汇,计算机网络英语词汇
- 应用随机过程——张波
- 2022电大国家开放大学网上形考任务-电子商务概论非免费(非答案)
- kindeditor上传图片php,kindeditor上传图片与上传文件js
- 【办公协作软件】万彩办公大师教程丨PDF页面排列布局帮助文档
- ADSL共享上网方式大总结(图)
- win7安装中文语言包