您当前的位置: 首页 >  hive

杨林伟

暂无认证

  • 2浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hive教程(08)- JDBC操作Hive

杨林伟 发布时间:2022-02-23 10:33:18 ,浏览量:2

文章目录
  • 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依赖):



    4.0.0
    com.ylw
    java-hive-demo
    1.0.0
    jar

    
        
            Yang Lin Wei
            https://yanglinwei.blog.csdn.net/
        
    

    
        
            org.apache.hive
            hive-jdbc
            2.3.3
            
                
                    org.eclipse.jetty.aggregate
                    *
                
            
        
    


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," +
                "sex_age struct," +
                "score map," +
                "depart_title map) " +
                "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,本文完!

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.0594s