文章目录

  • 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相关推荐

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

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

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

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

  3. 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 ...

  4. Java通过JDBC操作Hive

    http://www.cnblogs.com/netbloomy/p/6688670.html 0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hiv ...

  5. JDBC操作Hive出现的错误

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

  6. Hive教程(一)---hive入门

    目录 1.1什么是Hive 1.2 Hive的优缺点 1.3 Hive架构原理 1.4 Hive和数据库比较 1.5 Meta store数据库分析 1.1什么是Hive Hive:由Facebook ...

  7. Hive记录-Impala jdbc连接hive和kudu参考

    1.配置环境Eclipse和JDK 2.加载hive jar包或者impala jar包 备注:从CDH集群里面拷贝出来 下载地址:https://www.cloudera.com/downloads ...

  8. Hive编程指南-Spark操作Hive

    摘要:本文将要说明如何使用Spark来对Hive进行操作 1.打jar包,提交Spark任务 通过提交spark任务的方式,如下面的scala代码.之后需要将成代码打包成一个jar包,然后提交到spa ...

  9. Hive的两种操作模式

    Hive的客户端操作 Hive的客户端操作 通过JDBC操作Hive 通过Thrift操作Hive 通过JDBC操作Hive 首先 Hive 启动远程服务 hive --service hiveser ...

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

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

最新文章

  1. Nature:梁冠翔等发现肠道病毒组在新生儿体内分段寄生的模式
  2. 2015.7.13 第五课 课程重点(z-index、overflow、浏览器兼容性)
  3. 手把手实现YOLOv3(一)
  4. leetcode 230. Kth Smallest Element in a BST | 230. 二叉搜索树中第K小的元素(Java)
  5. 将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)
  6. HTTP管线化(HTTP pipelining)
  7. LeetCode 1775. 通过最少操作次数使数组的和相等(贪心+双指针)
  8. java文件编码格式环境变量_Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8...
  9. Toolbar详解 · Material Design Part 2
  10. 技术前沿:分布式缓存Redis Cluster在华泰证券的探索与实践
  11. 用mplfinance库定制A股常用的K线、均线图
  12. amazon php 空间,如何将PHP图像资源放入Amazon Web Services?
  13. python用蓝牙发文件_用pybluez进行python蓝牙发现
  14. Unbuntu 出现无法解析或打开软件包的列表或是状态文件的解决办法
  15. 在CSDN的博文中如何添加博主名片
  16. Camera成像中的Demosaic
  17. SnowNLP简易教程:分词、词性标注、情感分析、繁体转换、关键字抽取、相似度计算
  18. Word2016以上版本兼容模式不能使用公式编辑器的解决办法
  19. 对文件生成MD5文件配置表
  20. 5.19 对学生按姓名进行随机排序 [原创Excel教程]

热门文章

  1. AlphaGo Zero 强化学习算法原理深度分析
  2. 网络安全中常见攻击方式(SQL注入、XSS攻击、CSRF攻击、网页木马、文件包含漏洞攻击、目录遍历攻击、CC攻击、DOS攻击)
  3. [转贴]九大职业之一了百了[启示录]
  4. 计算机网络英语词汇,计算机网络英语词汇
  5. 应用随机过程——张波
  6. 2022电大国家开放大学网上形考任务-电子商务概论非免费(非答案)
  7. kindeditor上传图片php,kindeditor上传图片与上传文件js
  8. 【办公协作软件】万彩办公大师教程丨PDF页面排列布局帮助文档
  9. ADSL共享上网方式大总结(图)
  10. win7安装中文语言包