Hive第一天——Hive介绍以及简单使用

Hive第二天——Hive介绍以及简单使用

自己的话:黑发不知勤学早,白首方悔读书迟

每天都要保持前进!

一、什么是Hive

数据库:
mysql、oracle、sqlserver、DB2、sqlite、MDB
数据仓库:
Hive,是MR的客户端,也就是说不必要每台机器都安装部署Hive

HIVE是一个可以将sql翻译为MR程序的工具
HIVE支持用户将HDFS上的文件映射为表结构,然后用户就可以输入SQL对这些表(HDFS上的文件)进行查询分析
HIVE将用户定义的库、表结构等信息存储hive的元数据库(可以是本地derby,也可以是远程mysql)中。


二、Hive的特性和用途

1.特性:

1、操作接口是采用SQL语法,HQL
2、避免了写MapReduce的繁琐过程
3、不介入在线业务,因为hive是操作MapReduce的,MapReduce就是不介入在线业务的,这里的MapReduce指的是Hadoop中的MapReduce,此外storm等中也有MapReduce是在线的,MapReduce其实是一个概念,不是一个实际的框架。

2.用途:

解放大数据分析程序员,不用自己写大量的mr程序来分析数据,只需要写sql脚本即可。HIVE可用于构建大数据体系下的数据仓库。


三、Hive体系结构

1、Client(两种):

** 终端命令行
** JDBC – 不常用,非常麻烦(相对于前者)

2、metastore:

** 原本的数据集和字段名称以及数据信息之间的双射关系。
** 我们目前是存储在Mysql中

3、Server-Hadoop:

**在操作Hive的同时,需要将Hadoop的HDFS开启,YARN开启,MAPRED配置好


四、Hive基本思想

在HDFS中有三个资源的txt文件,将字段和字段对应的名称做一个唯一映射,这个映射存储在数据库MySql中,数据库的名字叫metastore,数据库中存着,第一个字段对应age,第二个字段对应sex,第三个字段对应name,还要告诉hive,当我使用hive去读取文件的时候,每个字段中间用什么分割,假设中间是/t,然后hive,读取数据的时候,告诉hive,每个字段中间以/t分割,第一个字段叫age,第二个字段叫sex,第三个字段叫name。

Hive要做的工作就是将HDFS中的内容读取到Hive中,然后再根据mysql映射过来的字段信息,对应的读取文件中的内容,这样表面上会产生一种错局,就好像在操作数据库一样

Hive把拿到的数据通过sql语句,转化为MR代码,最终打成jar包,提交到yarn上面,然后直接执行这个语句,对于用户操作来讲,好像是写了一段sql语句之后,然后就出现了结果。


五、Hive的简单使用和执行

1.Hive简单使用:

方式1:交互式查询
(1) hive>

    hive>select * from t_test;   #输入sql语句即可

(2)将hive启动为一个服务: hiveserver ,然后可以在任意一台机器上使用beeline客户端连接hive服务,进行交互式查询

方式2:将hive作为命令一次性运行
(1)hive>

 hive -e "sql1;sql2;sql3;sql4"   # “”中输入sql语句

(2)事先将sql语句写入一个文件比如 q.hql ,然后用hive命令执行:

  hive -f q.hql

方式3:将方式2写入一个xxx.sh脚本中

2.Hive执行(三种模式):

(1)将hive作为命令一次性运行:

[root@hdp01 ~]# hive -e “use default;create table tset_1(id int,name string); ”

这样我们创建了一个hive表

(2)也可以创建一个文件,执行这个文件:

[root@hadoop2 home]# vi /home/userinfo.txt

#编辑:
1,xiaoming,20
2,xiaowang,22
[root@hadoop2 home]# vi a.hql

#编辑:
use default;
create table test_2(id int,name string,age int)
row format delimited
fields terminated by ',';
load data local inpath '/home/userinfo.txt' into table test_2;
select count(*) from test_2;

然后执行:

hive -f a.hql

(3)在另一台虚拟机上(hdp01)(有同样的hive安装和配置):

当前虚拟机:

在/usr/local/src/hive-1.2.1/bin下有一个服务:hiveserver2
我们启动这个服务
Hive第一天——Hive介绍以及简单使用
这样这个服务启动完毕,光标停到下一行

另一台虚拟机:

我们在hap01(另一台虚拟机上)上同样进入hive的bin目录

[root@hdp01 bin]# ./beeline 
Beeline version 1.2.1 by Apache Hive

出现数据库提示符beeline:

beeline> !connect jdbc:hive2://hdp02:10000 #hive2为有mysql的主机名  hdp02为开了客户端的主机名 10000为服务端的进程端口号 ss -lnput 查询

Connecting to jdbc:hive2://hdp02:10000

Enter username for jdbc:hive2://hdp02:10000: root

Enter password for jdbc:hive2://hdp02:10000: 

Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ

出现数据库提示符0: jdbc:hive2://hdp02:10000>
这样我们就链接到了hdp02的服务端了,我们可以在这输入一些hive的语句

0: jdbc:hive2://hdp02:10000> show databases;
0: jdbc:hive2://hdp02:10000> show tables

Hive第一天——Hive介绍以及简单使用
Hive第一天——Hive介绍以及简单使用
这些命令都是发到hdp02上的服务端执行
可以看到hdp02的已经有“ok”出现
Hive第一天——Hive介绍以及简单使用


文章部分转自:https://blog.csdn.net/dataiyangu/article/details/90116354


HIVE看起来就像一个大的数据库

上一篇:Spark SQL 使用beeline访问hive仓库


下一篇:Hive启动的三种方式