分享

Hive全面入门包括:概念、架构、原理、编程等

问题导读

1.什么是数据仓库?
2.传统数据仓库面临怎样的挑战?
3.hive是什么?
4.hive系统构架是怎样的?
5.hive的工作原理是怎样的?
6.hive HA基本原理是什么?
7.Impala是什么?
8.Impala的系统架构是怎样的?
9.Impala查询执行过程是怎样的?
10.Impala和hive的区别在哪里?
11.hive如何安装配置?
12.hive的基本数据类型和基本操作有哪些?
13.hive有哪些优势?



1.什么是数据仓库

1.1数据仓库概念
1.png

对历史数据变化的统计,从而支撑企业的决策。比如:某个商品最近一个月的销量,预判下个月应该销售多少,从而补充多少货源。

1.2传统数据仓库面临的挑战

  • (1)无法满足快速增长的海量数据存储需求
  • (2)无法有效处理不同类型的数据
  • (3)计算和处理能力不足

1.3 Hive介绍

3.png

4.png

5.png

Hbase支持快速的交互式的大数据应用
pig,Hive支持批量式的数据分析业务

1.4 Hive与传统数据库的对比

6.png

1.5 Hive在企业中的部署与应用

7.png

2.Hive系统架构

8.png

Microsoft推出的ODBC(Open Database Connectivity)技术 [1] 为异质数据库的访问提供了统一的接口
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
CIL (Common Intermediate Language) 公共中间语言

3.Hive工作原理

3.1 SQL转换为MapReduce作业的基本原理

9.png

10.png

3.2 Hive中SQL查询转换MapReduce作业的过程

11.png

12.png

13.png

4.Hive HA基本原理

14.png

5.Impala

5.1 Impala介绍

15.png

5.2 Impala系统架构


16.png

17.png


5.3 Impala查询执行过程
18.png

19.png
20.png

5.4 Impala和Hive的区别


21.png

22.png

23.png

6.Hive编程实践

6.1 Hive的安装和配置
24.png

6.2 Hive的基本数据类型

25.png

26.png

6.3 Hive的基本操作

1.create:创建数据库、表、视图
  • 创建数据库
       (1)创建数据库hive
               hive>create database hive;
       (2)创建数据库hive,因为hive已经存在,所以会抛出异常,加上if not exits 关键字,则不会抛出异常
               hive>create database if not exits hive;

  • 创建表
       (1)在hive数据库中创建表usr,含三个属性id,name,age
                hive>use hive;
                hive>create table if not exists usr(id bigint,name string,age int);
       (2)在hive数据库中创建表usr,含三个属性id,name,age,存储路径为“/usr/local/hive/warehouse/hive/usr”
                hive>create table if not exits hive.usr(id bigint,name string,age int)
                      >location '/usr/local/hive/warehouse/hive/usr';

  • 创建视图
       (1)创建视图little_usr,只包含usr表中id,age属性
                hive>create view little_usr as select id,age from usr;

2.show:查看数据库、表、视图
  • 查看数据库
(1)查看hive中包含的所有数据库
[mw_shl_code=java,true]hive>show databases;[/mw_shl_code]
(2)查看hive中以h开头的所有数据库
[mw_shl_code=java,true]hive>show databases like 'h.*';[/mw_shl_code]

  • 查看表和视图
(1)查看数据库hive中所有的表和视图
[mw_shl_code=java,true]hive>use hive;
hive>show tables;[/mw_shl_code]
(2)查看数据库hive中以u开头的所有表和视图
[mw_shl_code=java,true]hive>show tables in hive like 'u.*'[/mw_shl_code]

3.load:向表中装在数据
(1)把目录‘/usr/local/data’下的数据文件中的数据装载进usr表并覆盖原有数据
[mw_shl_code=java,true]hive>load data local inpath '/usr/local/data' overwrite into table usr;[/mw_shl_code]

(2)把目录‘/usr/local/data’下的数据文件中的数据装载进usr表不覆盖原有数据
[mw_shl_code=java,true]hive>load data local inpath '/usr/local/data'  into table usr;
[/mw_shl_code]

(3)把分布式系统文件目录‘hdfs://master_server/usr/local/data’下的数据文件数据装载进usr表并覆盖原有数据
[mw_shl_code=java,true]hive>load data local inpath ‘hdfs://master_server/usr/local/data’
      >overwrite into table usr;[/mw_shl_code]

4.insert:向表中插入数据或从表中导出数据
(1)向表中usr1中插入来自usr表中的数据并覆盖原有数据
[mw_shl_code=java,true]hive>insert overwrite table usr1
      >select * from usr where age=10;[/mw_shl_code]

(2)向表中usr1中插入来自usr表中的数据并追加在原有数据后
[mw_shl_code=java,true]hive>insert into table usr1
      >select*from usr
      >where age=10;[/mw_shl_code]

6.4 Hive的应用实例(wordCount)

a.png
b.png

6.5 Hive的优势
WordCount算法在MapReduce中的编程实现和Hive中编程实现的主要不同点:

1.采用hive实现WordCount算法需要编写较少的代码量
  • 在MapReduce中,WordCount类由63行Java代码编写而成
  • 在hive中只需要编写7行代码

2.在MapReduce的实现中,需要进行编译生成jar文件来执行算法,而在hive中不需要
  • hiveQL语句的最终实现需要转换为MapReduce任务来执行,这都是由hive框架自动完成的,用户不需要了解具体实现细节

7.总结

  • 本章详细介绍了hive的基本知识。hive是一个构建与Hadoop顶层的数据仓库工具,主要用于对存储在Hadoop文件中的数据集进行数据整理、特殊查询和分析处理。hive在某种程度上可以看做是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。
  • hive支持使用自身提供的命令行CLI、简单网页HWI访问方式,及通过Karmasphere、Hue、Qubole等工具的外部访问
  • hive在数据仓库中的具体应用中,主要用于报表中心的报表分析统计上。在Hadoop集群上构建的数据仓库由多个hive进行管理,具体实现采用hive HA原理的方式,实现一台超强“hive”。
  • Impala作为新一代开源大数据分析引擎,支持实时计算,并在性能上比hive高出3~30倍,甚至在将来的某一天可能会超过hive的使用率而成为Hadoop上最流行的实时计算平台。
  • 本章最后以单词统计为例,详细介绍了如何使用hive进行简单编程。




最新经典文章,欢迎关注公众号


作者:Zero-One-0101
原文:https://blog.csdn.net/wangzi11111111/article/details/89096936/


没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条