在大数据世界里打小怪之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