Hive安装测试使用记录

安装前准备

需要装的软件版本
mysql5.7.24
hadoop3.0.0
hbase1.3.1
zookeeper3.4.11

因为服务器是公司测试服务器 , 所以这四个都已经是安装好的了 , 不做过多介绍 , 安装教程自行百度

安装Hive

下载地址 : https://dlcdn.apache.org/hive/

下载安装一定要找到和你的hadoop , hbase , zookeeper匹配的版本
第一次安装了3.1.2 可以正常运行 , 但是在建和hbase的映射表的时候会找不到表和列族

具体版本对照可参考这篇文章:
https://cloud.tencent.com/developer/article/1084829

我们选择2.3.9版本
将下载好的包解压在/opt/software目录下

tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /opt/software/

将文件夹名称修改为hive

mv apache-hive-2.3.9-bin hive

最后得到下列文件
在这里插入图片描述
在/etc/profile中添加环境变量

export HIVE_HOME=/opt/software/hive
export PATH=$PATH:$HIVE_HOME/bin

执行加载配置文件命令

source /etc/profile

执行命令

 hive --version

有如下信息则安装成功

如果执行命令不成功 , 请切换root账户下并携带环境变量 , 再尝试
在这里插入图片描述

我们进入conf目录下 , 将hive-default.xml.template文件复制并重命名为hive-site.xml

cp hive-default.xml.template hive-site.xml

我们在mysql中创建hive数据库 , 用户管理hive
创建后修改hive-site.xml配置文件

在配置文件中添加如下配置
添加后为防止出现问题需要把该文件同一个name的配置注释掉或删掉

  <property>
    <name>system:java.io.tmpdir</name>
    <value>/usr/local/hive/tmp</value>
  </property>
  <property>
    <name>system:user.name</name>
    <value>/usr</value>
  </property>

  <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
      <description>数据库username</description>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>1234</value>
      <description>数据库password</description>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://123.456.789.111:1234/hive</value>
      <description>JDBC元存储的JDBC连接字符串</description>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.cj.jdbc.Driver</value>
      <description>JDBC驱动类名</description>
  </property>

我们在建表时可能会出现奇奇怪怪的异常 , 建议在配置文件中添加如下配置 , 使其Hbase , ZK的链接使用我们安装好的Hbase和ZK中的链接

  <property>
    <name>hive.aux.jars.path</name>
    <value>
      file:///opt/software/hive/lib/hive-hbase-handler-3.1.2.jar,
      file:///opt/software/zookeeper-3.4.11/zookeeper-3.4.11.jar,
      file:///opt/software/hbase-1.3.1/lib/hbase-client-1.3.1.jar,
      file:///opt/software/hbase-1.3.1/lib/hbase-common-1.3.1.jar,
      file:///opt/software/hbase-1.3.1/lib/hbase-server-1.3.1.jar,
      file:///opt/software/hbase-1.3.1/lib/hbase-common-1.3.1-tests.jar,
      file:///opt/software/hbase-1.3.1/lib/hbase-protocol-1.3.1.jar,
      file:///opt/software/hbase-1.3.1/lib/htrace-core-3.1.0-incubating.jar
    </value>
  </property>

配置好后下载mysql的链接驱动
下载地址 : https://dev.mysql.com/downloads/connector/j/
或者https://repo1.maven.org/maven2/mysql/mysql-connector-java/

在这里插入图片描述
将驱动中的jar包拷贝在hive目录中的lib目录下
在这里插入图片描述
在hive目录的bin目录下执行初始化和数据库的链接

schematool -dbType mysql -initSchema

完成后数据库hive库会生成如下表
在这里插入图片描述
我们运行hive
在这里插入图片描述
hive的命令基本和sql一样 , 我们创建一个库

create database hive_test;

查询所有库

show databases;

在这里插入图片描述
使用hive_test库

use hive_test;

创建一张表

create table test(id int,value string);

注意 : 这里的字符型是string相当于mysql中的varchar
显示所有的表

show tables;

在这里插入图片描述

创建Hbase映射表

创建Hbase外部表的Hql:

CREATE EXTERNAL TABLE test007 (rowkey string,name string,age string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,Info:name,Info:age") 
TBLPROPERTIES ("hbase.table.name" = "test007");
  • 第一行是数创建表及属性,这个rowkey是必须要写的,其他字段及类型加在key的后边,这里定义的是hive的字段及类型
  • 第二行是固定写法
  • 第三行是每个字段与Hbase中的映射关系 , 等号前边是固定写法 , 后边冒号前边为列族名 , 后边为列名
  • 第四行等号左边是固定写法 , 右边为Hbase中的表名

EXTERNAL关键字建立的就是外部表,如果Hbase中已经存在了test007这个表不加这个关键字会报错

我们关联表建好后可以进行查询

select * from test007;

在这里插入图片描述
到这里说明我们完成了Hive的所有安装步骤 , 可以正常使用

将Hive以服务形式后台启动

我们刚刚成功安装了Hive , 但是只能在黑框框里面命令行形式操作 , 实际运用中我们需要像mysql一样连接做一些操作 , 接下载我们就修改一下Hive 的配置达到我们的目的

添加如下配置

  <property>
    <name>hive.server2.enable.doAs</name>
    <value>false</value>
    <description>
      Setting this property to true will have HiveServer2 execute
      Hive operations as the user making the calls to it.
    </description>
  </property>

  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>123.456.789.111</value>
    <description>Hive所在服务器地址</description>
  </property>

  <property>
    <name>hive.server2.thrift.port</name>
    <value>1234</value>
    <description>监听一个端口</description>
  </property>

启动Hive元数据库

hive --service metastore & 

开启hiveserver2服务

hive --service hiveserver2 &

至此Hive以服务形式启动

使用beeline方式连接

执行命令

beeline

再执行

!connect jdbc:hive2://123.456.789.111:1234

之后会提示输入账号密码默认账号是root密码是没有的可以直接回车
在这里插入图片描述

使用DBeaver可视化工具链接Hive

下载DBeaver , 下载地址 : https://dbeaver.io/download/
安装成功后打开如下界面
在这里插入图片描述
新建连接 , 选择hive
在这里插入图片描述
添加对应信息
在这里插入图片描述

我们将Hive目录下的jdbc目录中的hive-jdbc-2.3.9-standalone.jar下载下来 , 在编辑驱动设置中添加进去
在这里插入图片描述
配置完成后我们打开操作类似于Navicat , 找到我们的库和表打开就可以看到我们的数据了
在这里插入图片描述

JAVA使用JDBC连接Hive

java使用起来也是非常的简单的

pom导入依赖:

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.3.9</version>
        </dependency>

版本和安装的Hive尽量一致

代码:

package com.dataojo.testdemo.hive;

import java.sql.*;

/**
 * @author Tianyu
 * @date 2021/11/4 10:10
 * @desc HiveDemo
 */
public class HiveDemo {

    private static String driveName = "org.apache.hive.jdbc.HiveDriver";

    private static String ip = "123.456.789.111";

    private static String prot = "1234";

    private static String lib = "hive_test";

    private static String username = "root";

    private static String password = "";

    private static Connection con = null;

    static {
        try {
            Class.forName(driveName);
            con = DriverManager.getConnection("jdbc:hive2://" + ip + ":" + prot + "/" + lib, username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        ResultSet res = null;
        Statement stmt = null;
        try {
            stmt = con.createStatement();
            String sql = "select * from test007";
            res = stmt.executeQuery(sql);
            while (res.next()) {
                System.out.println(res.getString(1) + "\t" + res.getString(2) + "\t" + res.getString(3));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (res != null) {
                    res.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值