一起重新开始学大数据-hive篇-day49 Hive简介和安装

本文详细介绍了Hive作为大数据仓库的基础架构,包括其类SQL查询语言HQL的特性,数据存储和更新的区别,以及如何在Hadoop上安装和配置Hive 1.2.1版。重点讲解了MySQL编码调整和Hive元数据库设置,以及安装步骤和实战练习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一起重新开始学大数据-hive篇-day49 Hive简介和安装

在这里插入图片描述

理论部分


hive概述

  Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

 Hive可以想象成是SQL解析引擎(但不是sql解析引擎),它将SQL语句转译成M/R Job然后在Hadoop执行。

 Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。

 Hive相当于hadoop的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上

hive安装部分理论

版本介绍:

  0.13和.14版本稳定版本,不支持但是不支持更新删除操作。(属于Hive1版本)

  1.2.1和1.2.2 稳定版本,为Hive2版本(主流版本)

  1.2.1的程序只能连接hive1.2.1 的hiveserver2

hive的Hiveql与传统sql差异

表分析

在这里插入图片描述

具体分析

  1. 查询语言。类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。

  2. 数据存储位置。所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。 3. 数据格式。Hive 中没有定义专门的数据格式。而在数据库中,所有数据都会按照一定的组织存储,因此,数据库加载数据的过程会比较耗时。

  3. 数据更新。Hive 对数据的改写和添加比较弱化,0.14版本之后支持,需要启动配置项。而数据库中的数据通常是需要经常进行修改的。

  4. 索引。Hive 在加载数据的过程中不会对数据进行任何处理。因此访问延迟较高。数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询。

  5. 执行计算。Hive 中执行是通过 MapReduce 来实现的而数据库通常有自己的执行引擎。

  6. 数据规模。由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。

安装流程


在这里插入图片描述

Hive的安装和使用

我们的版本约定:
 JAVA_HOME=/usr/local/soft/jdk1.8.0_171(jdk1.8.XXXX根据自己安装的进行动态修改)
 HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
 HIVE_HOME=/usr/local/soft/hive-1.2.1

一、离线安装MySQL(已经安装过MySQL可以跳过此步骤)

👉想看该文章关于安装MySQL的部分—👈

二、修改MySQL编码

1、修改mysql编码为UTF-8
1.1 编辑配置文件
vim /etc/my.cnf
1.2 加入以下内容:

[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

1.3 重启mysql
systemctl restart mysqld
1.4 登录mysql
mysql -uroot -p123456
1.5 查看mysql当前字符集
show variables like '%char%';
在这里插入图片描述

三、安装Hive

前提是:mysql和hadoop必须已经成功启动了
在MySQL界面中创建hive元数据库
create database hive character set "latin1";

1、解压hive的安装包:
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/soft
修改目录名称:
mv apache-hive-1.2.1-bin hive-1.2.1

2、进入hive-1.2.1/conf目录,复制备份文件并重命名
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml

3、配置hive的配置文件(命令模式输入/加关键字
3.1修改hive-env.sh
加入三行内容(大家根据自己的目录和实际情况来添加)

HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HIVE_HOME=/usr/local/soft/hive-1.2.1

在这里插入图片描述

3.2修改hive-site.xml

<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://master:3306/hive?useSSL=false</value>
</property>
<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
</property>
<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>
<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>123456</value>
</property>
<property>
	<name>hive.querylog.location</name>
	<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
<property>
	<name>hive.exec.local.scratchdir</name>
	<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
<property>
	<name>hive.downloaded.resources.dir</name>
	<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>

3.4拷贝mysql驱动到$HIVE_HOME/lib目录下
cp /usr/local/soft/mysql-connector-java-5.1.49.jar $HIVE_HOME/lib
3.5将hive的jline-2.12.jar拷贝到hadoop对应目录下,hive的 jline-2.12.jar 位置在 :/usr/local/soft/hive-1.2.1/lib/jline-2.12.jar
将hive的jar拷过去hadoop下:
cp /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar /usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/

3.6配置环境变量,加上HIVE_HOME
修改/etc/profile
vim /etc/profile

HIVE_HOME=/usr/local/soft/hive-1.2.1
export PATH=$path:$HIVE_HOME/bin

-----(在原有的基础上加上$HIVE_HOME/bin)

重新加载环境变量
source /etc/profile

3.7启动hive:(直接输入hive)
hive

3.8 修改mysql元数据库hive,让其hive支持utf-8编码以支持中文
(这步最好时shell里再开个master窗口,一个hive界面一个mysql界面)
登录mysql:
mysql -u root -p123456
切换到hive数据库:
use hive;

1).修改字段注释字符集
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

2).修改表注释字符集
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

3).修改分区表参数,以支持分区键能够用中文表示
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

4).修改索引注解(可选做)
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

四、测试hive

1、启动hive
  hive
2、在hive中创建test1数据库
create database test1;
3、切换test1数据库:
use test1;
4、创建students表:

create table students(
    id bigint comment '学生id',
    name string comment '学生姓名',
    age int comment '学生年龄',
    gender string comment '学生性别',
    clazz string comment '学生班级'
) comment '学生信息表' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; 

5、创建score表:

create table score(
    id bigint comment '学生id',
    score_id bigint  comment '科目id',
    score int comment '学生成绩'
) comment '学生成绩表'  
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';  

6、查看表信息:

desc students;
desc score;

7.导入数据
输入

load data local inpath 'linux本地地址 ' into table 表名

表中数据:
链接:https://pan.baidu.com/s/1TSFcN_ZicE-zJSfciXJKjQ
提取码:48p0

小练习


1、模仿建表语句,创建subject表,并使用hdfs dfs -put 命令加载数据
2、查询学生分数(输出:学号,姓名,班级,科目id,科目名称,成绩)
3、查询学生总分(输出:学号,姓名,班级,总分)
4、查询全年级总分排名前三(不分文理科)的学生(输出:学号,姓名,班级,总分)
5、查询文科一班学生总分排名前10的学生(输出:学号,姓名,班级,总分)
6、查询每个班级学生总分的平均成绩(输出:班级,平均分)
7、查询每个班级的最高总分(输出:班级,总分)
8、(思考)查询每个班级总分排名前三的学生(输出:学号,姓名,班级,总分)

|
|
|
|

上一章-hadoop篇-day48 Yarn
下一章-hive篇-day 50 hive语法及进阶
|
|
|
|
|

听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵!

在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的动作太慢了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值