hive本地模式安装及简单案例

一、hive介绍

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能。
本质是:将HQL转化成MapReduce程序

1.1 hive安装地址

1.Hive官网地址
http://hive.apache.org/
2.文档查看地址
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
3.下载地址
http://archive.apache.org/dist/hive/
4.github地址
https://github.com/apache/hive

1.2 hive安装模式介绍

Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景。

1、内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错)

2、本地模式(本地安装mysql 替代derby存储元数据)

3、远程模式(远程安装mysql 替代derby存储元数据)

本地安装方式和内嵌式的区别在于,不再使用内嵌的Derby作为元数据的存储介质,而是使用其他数据库比如MySQL来存储元数据。
这种方式是一个多用户的模式,运行多个用户client连接到一个数据库中。这种方式一般作为公司内部同时使用Hive。
这里有一个前提,每一个用户必须要有对MySQL的访问权利,即每一个客户端使用者需要知道MySQL的用户名和密码才行。

二、hive安装配置

2.1 hive解压安装

tar -zxvf apache-hive-2.3.5-bin.tar.gz -C  /opt/apps

2.2 添加环境变量

vim /etc/profile

#hive
export HIVE_HOME=/opt/apps/apache-hive-2.3.5-bin
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

在这里插入图片描述

2.3 hive常见属性配置

hive-env.sh

进入conf目录 拷贝 hive-env.sh.template,并添加环境变量

 cd /opt/apps/apache-hive-2.3.5-bin/conf/
 cp hive-env.sh.template hive-env.sh

在这里插入图片描述

hive- site.xml

因为需要将hive元数据存放到mysql,所以需要先在mysql创建好用户,并赋予权限。

创建java用户,并赋予权限。

CREATE USER 'java'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO java IDENTIFIED BY '123456'  WITH GRANT OPTION;
 cd /opt/apps/apache-hive-2.3.5-bin/conf/
 vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://slave1:3306/metastore?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>

        <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
          <description>Driver class name for a JDBC metastore</description>
        </property>

        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>java</value>
          <description>username to use against metastore database</description>
        </property>

        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>123456</value>
          <description>password to use against metastore database</description>
        </property>

        <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>/user/hive/warehouse</value>
          <description>location of default database for the warehouse</description>
       </property>

       <property>
                <name>hive.cli.print.header</name>
               <value>true</value>
       </property>

      <property>
                <name>hive.cli.print.current.db</name>
                 <value>true</value>
      </property>
</configuration>

在这里插入图片描述

2.4 初始化元数据

初始化之前需要放mysql jar

默认情况下, Hive的元数据保存在了内嵌的derby数据库里, 但一般情况下生产环境使用MySQL来存放Hive元数据。
将 mysql-connector-java-x.x.x.jar 放入 $HIVE_HOME/lib 下。(mysql jdbc驱动程序)

这里注意mysql版本一定要比mysql-connector-java-x.x.x.jar版本低,要不然会报错,他是向下兼容!

schematool -dbType mysql -initSchema

如果没有初始化元数据会报错

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

如果没有删除原来映射到MySQL中的表的话会报如下错误:

org.apache.hadoop.hive.metastore.HiveMetaException

在这里插入图片描述
初始化之后可以看到mysql的metastore库存储了hive元数据。

三 hive简单案例

在进行hive案例之前,需要完成hadoop启动
由于已经将HIVE_HOME加入到了环境变量中,所以这里直接在命令行敲hive即可

hive
#创建数据库
create database sm_data;

在这里插入图片描述
可以看到在HDFS上hive指定目录已经生成对应文件

# 删除数据库,HDFS目录文件也清空
drop database sm_data;

在这里插入图片描述

3.1 导入本地文件数据到hive表

create database db_data;
use db_data;
##创建表
create  table if not exists student(
  `id` int comment 'id',
  `name` string comment '名字'
) comment '学生信息表'
row format delimited fields terminated by '\t'
STORED AS TEXTFILE
location '/user/hive/warehouse/db_data.db/student'
tblproperties ("orc.compress"="SNAPPY");

创建student表, 并声明文件分隔符’\t’,其中location 代表HDFS数据存放的路径

创建student.txt文件,准备数据。注意以tab键间隔

vim student.txt
100     小王
88      小明
77      小红

执行命令导入数据到hive表

load data local inpath '/data2/student.txt'  into table student;

语法:
hive> load data [local] inpath ‘/opt/module/datas/student.txt’ [overwrite] into table student [partition (partcol1=val1,…)];
(1)load data:表示加载数据
(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区

效果:
在这里插入图片描述
在这里插入图片描述

希望文章对你有帮助

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值