在大数据世界里打小怪之Hive的数据模型

作者: 四毛m | 来源:发表于2020-04-13 21:36 被阅读0次

hive是什么呢?如果用它的百度概念,那就是:

  • hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
    看完第一反应是不是:这都啥跟啥?

在经历无数次百度之后,我终于弄清hive小怪的真面目。它就是hadoop小boss的亲民大使呀。

hadoop作为目前最流行的大数据处理平台,手下有两大左右护法:HDFS和MapReduce,HDFS善文,专门存储文件,脑容量特别大;MapReduce善武,专门处理文件,十八样武艺样样精通。

但是,我等平民怎么懂得和这两位大将沟通呢?这时候,hive就出现了,我等平民用sql语言和hive交流,然后hive再将我们的请求传达给hadoop。

如图:


四毛的图.png

好咯,既然hive小怪是为我们数据分析师服务的,那接下来要好好了解它的喜好啦,争取早日把这只小怪拿下!

这篇文章,四毛就来分享一下hive的数据模型~

首先,数据模型是什么?

数据模型其实就是数据存储和展现的不同形式,不同的模型有不同的特征和操作方式。hive中,数据模型可以分为表(table)和视图(view)两大类,而表又有多个子分类。


四毛的图2.png

1.内部表和外部表

内部表是由hive创建并加载数据的表,存储在hive的数据仓库里。亦就是说,内部表是hive的亲儿子,hive创建了它,并给它加载数据。

外部表是hive创建了一个表来加载现阶段已存在于HDFS中的数据。可以理解为,外部表是hive雇佣的员工,hive创建了它,它自带数据。

那么一个是亲儿子,一个是外雇的员工,他们有什么不同点呢?


四毛的图3.png

2.分区表和桶表

分区表是按照partition列对数据进行拆分,所有的partition表都存储在同一目录下,可以提高查询效率。可以理解为,我们把数据按条件拆分,并放在一个文件夹里,便于我们查看。

桶表是对数据进行哈希取值,打散了之后放到不同的文件中存储。不专业地说,就是数据太大了,所以我们把数据随机放在几个桶里,要用的时候可以全部用,也可以取其中一桶或多桶。

下图是个举例,从中可以看出桶表和分区表的一些区别来~


四毛的图4.png

那么我们来总结一下,他俩有什么不同点呢?


image.png

3.视图

视图是一种虚表,是一个逻辑概念,建立在已有表的基础上,用于跨表查询。视图赖以建立的这些表称为基表。通俗地说,表是实实在在的数据,而视图只是那美丽的“海市蜃楼”,我们可以利用视图做任何表格操作,但最终,它不过是浮云啊~

那如何创建视图呢?举个栗子:

create view view1 as select a.id,a.name,b.salary,b.dept from test1 a,test2 b where a.id=b.id;

注:为避免小伙伴们说我不严谨,这里说明一下:hive的视图是虚的,但并不是所有的视图都是虚的,例如:Mysql和Oracle中也有实物化的视图。

The end~

相关文章

网友评论

    本文标题:在大数据世界里打小怪之Hive的数据模型

    本文链接:https://www.haomeiwen.com/subject/eglnmhtx.html