一起重新开始学大数据-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差异
表分析
具体分析
-
查询语言。类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。
-
数据存储位置。所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。 3. 数据格式。Hive 中没有定义专门的数据格式。而在数据库中,所有数据都会按照一定的组织存储,因此,数据库加载数据的过程会比较耗时。
-
数据更新。Hive 对数据的改写和添加比较弱化,0.14版本之后支持,需要启动配置项。而数据库中的数据通常是需要经常进行修改的。
-
索引。Hive 在加载数据的过程中不会对数据进行任何处理。因此访问延迟较高。数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询。
-
执行计算。Hive 中执行是通过 MapReduce 来实现的而数据库通常有自己的执行引擎。
-
数据规模。由于 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编码
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语法及进阶
|
|
|
|
|
听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵! |