学习数据仓库Hive

时间:2019-08-30
本文章向大家介绍学习数据仓库Hive,主要包括学习数据仓库Hive使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

数据分析引擎:hive

大数据的终极目标:使用SQL语句来处理大数据 

1,hadoop的体系架构中:

 两个数据分析引擎:(*)Hive:支持sql

                           (*)Pig:支持PigLatin

 一,什么是hive?

1,hive是一个基于hdfs之上的数据仓库

  hive                hdfs

  表                   目录

  数据                文件

  分区表            目录

  分桶                文件

2,hive是基于hadoop之上的一个数据分析引擎

也就是说Hive是一个翻译器(hive 2.x以前:sql语句由hive编译成mr,hive2.x以后:sql语句由hive编译成spark程序)

 3,hql是sql的一个子集,不完全支持sql

 二,hive的体系架构

    hive是基于在hdfs之上的,数据也是存在于我们的从节点Datanode上面的。

    第一种方式:我们可以通过cli命令行写sql语句,然后由Hive Driver转换成MR任务去处理数据

    第二种方式:通过jdbc的方式,需要指定url确定访问地址,而且需要通过中间人(1.x Thrift server 2.x HiveServer2  端口都是10000)把sql语句提交给我们的hiveDriver驱动

    第三种方式 基于网页去执行sql,用HWI(Hive Web Interface只有hive2.2版本以前才提供,2.2之后使用HUE去使用)去提交sql到HiveDriver上去运行.

    注意:hive架构中元数据要单独存储在数据库中(推荐使用mysql去存储),通过读取mysql数据库中存储的hive元数据得到hive里面存储的真正的数据(数据模型),

因为hive元数据存储了hive的表名、列名、列的类型 、分区、分桶、其他信息.

三,hive的数据模型

1,内部表:类似于Mysql,Oracle里面的表

2,外部表:只定义表结构,真正的数据存储在hdfs的某个目录上。可以通过查看外部表的方式查看到这一个路径下所有的表信息

3,分区表:提升性能(按部门分区)

     你可以按某个字段去分区,比如你有张员工表,表里肯定有部门号,按照部门号分区,也就是把属于同一个部门的员工放在一张表里管理,那么在查询的时候就可以只扫描这张表,从而提升效率

 4,分桶表:类似hash分区,判断某个字段值的hash是否一样,一样的话分一个桶。

    例如:我们还是拿员工表举例,取部门号的hash值,把所有数据的部门hash值一样的数据分在一个桶(桶是以文件形式存在的,区是以目录形式存在的)里面。

 5,视图

    视图的存在是为了简化复杂的查询,就是将复杂的sql结果保留成视图,下次直接查询视图就可以得到结果。比如你把查询部门号为10的员工保留成视图,下次直接查询视图就可得到结果

原文地址:https://www.cnblogs.com/jackyu888/p/11436189.html