本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

数据仓库hive概念与数据仓库分层、概念模型、逻辑模型、物理模型

发布于2021-07-24 22:04     阅读(1296)     评论(0)     点赞(11)     收藏(5)


数据仓库重点概念

Hive的工作流程

1、执行查询:从Hive的CLI或Web UI发出查询命令给驱动程序(任何JDBC,ODBC数据库驱动)执行。
2、获取计划:驱动程序请求查询编译器解析查询、检查语法、生成查询计划或者查询所需要的资源。
3、获取元数据:编译器向元数据存储数据库发送元数据请求。
4、发送元数据:作为响应,元数据存储数据库向编译器发送元数据。
5、发送计划:编译器检查需要的资源,并将查询计划发送给驱动程序。至此,查询解析完成。
6、执行计划:驱动程序向执行引擎发送执行计划。
7、执行作业:执行计划的处理是一个MapReduce作业,执行引擎想namenode上的JobTracker进程发送作业,JobTracker把作业分配给datanode上的TaskTracker进程。此时,查询执行MapReduce作业。
7.1、操作元数据:执行作业的同时,执行引擎可能会执行元数据操作,比如DDL语句等。
8、取回结果:执行引擎从datanode接收结果。
9、发送结果:执行引擎向驱动程序发送合成的结果值。
10、发送结果:驱动程序向Hive接口(CLI或Web UI)发送结果。

Hive将SQL解析成MapReduce过程

1、Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化成抽象语法树AST Tree。
2、遍历AST Tree,抽象出查询的基本组成单元Query Block。
3、遍历Query Block,编译为执行操作数OperatorTree。
4、逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量。
5、遍历OperatorTree,编译成MapReduce任务。
6、物理层优化器进行MapReduce任务的变换,生成最终执行计划。

内部表和外部表

内部表:当删除内部表时,Hive也会删除这个表中的数据,内部表不适合与其它工具共享数据。
外部表:删除该表并不会删除原始数据,删除的只是该表的元数据信息。

维度表、实体表、事实表

维度表:存放的数据是对事实的各个方面描述,比如时间维度等。维度表只能是事实表的一个分析角度。
事实表:事实表就是通过各种维度和一些指标值组合确定的一个事实。
实体表:实体表就是一个实际对象的表,存放的数据一定是一条条客观存在的事物数据。

4个By的区别

1、Sort By:分区内有序。
2、Order By:全局排序,只有一个Reduce。
3、Distrbute By:类似MR中的Partition,进行分区,结合sort by使用。
4、Cluster By:当distrbute by和sort by字段相同时,可以使用cluster by方式,Cluster By同时具备distrbute by和sort by,但排序只能是升序,不能指定排序规则为asc或desc。

UDF、UDTF、UDAT

udf:读入一行数据,写出一行数据。一对一
udtf:读入一行数据,写出多行数据。一对多
udaf:聚合函数,读入多行数据,写出一行数据。多对一

Hive优化

1、MapJoin
2、行列过滤
3、采用分桶技术
4、采用分区技术
5、合理设置Map数
6、小文件合并
7、合理设置Reduce数
8、常用参数

// 输出合并小文件
SET hive.merge.mapfiles = true; -- 默认true,在map-only任务结束时合并小文件
SET hive.merge.mapredfiles = true; -- 默认false,在map-reduce任务结束时合并小文件
SET hive.merge.size.per.task = 268435456; -- 默认256M
SET hive.merge.smallfiles.avgsize = 16777216; -- 当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge

雪花模型、星型模型、星座模型

星型模型:星型模型的维度只有一层。
雪花模型:雪花模型的维度可能会有多层。
星座模型:基于多个事实表。星座模型与前两个没有冲突。

数据仓库分层

dwd层(数据明细层)
dws层(数据汇聚层)
kpi层(数据应用层)

数据建模

概念模型

根据用户需求,通过分析抽取概念性的要素,确立实体、属性、联系三要素等,使用E-R图表示。

概念数据模型的目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系。

内容包含:
1、实体与实体之间的关系。(无需定义主键与属性)
2、确定不同实体间的层次关系。

逻辑模型

逻辑模型是将概念模型转化为具体的数据模型的过程,根据概念模型设计的E-R图转成相对应的逻辑模型,这种转换要符合关系数据模型的原则。

将概念模型细分成所需的具体的功能,需要处理的信息。

  • 内容包含:
    1、区分为哪些主题,每个主题包含哪些实体(表)。
    2、每个实体(表)中需要的属性。
    3、实体与实体之间的关系是什么。
    4、实体与实体之间是否有约束。

物理模型

根据逻辑模型对应到具体的数据模型的机器实现。

物理模型是对真实数据库的描述。如关系数据库中的一些对象为表、视图、字段、数据类型、长度、主键、外键、索引、约束、是否可为空、默认值。

物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放。

  • 内容包含:
    1、定义类型与长度。
    2、字段的详细定义(非空、默认值等)。
    3、约束定义(主键、外键)。

原文链接:https://blog.csdn.net/qq1021979964/article/details/109264739



所属网站分类: 程序员的那点事

作者:woshidakeai

链接:http://www.pythonpdf.com/blog/article/401/c341dcf77ce2f6660fb2/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)