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

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~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值