Hive高频考点.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Hive高频考点.pdf》由会员分享,可在线阅读,更多相关《Hive高频考点.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Hive 高频考点 之前听说过一句话,我觉得十分在理:处在互联网时代,是一种幸福,因为各式各样的信息非常容易触达,如果掌握了信息筛选的能力,就真的是“运筹帷幄之中,决胜千里之外”。就像现在各行业都内卷不断,我们要从中破圈,只有想办法提升自己的竞争力!例如备战面试,广泛无脑地刷题只会消耗完你最后一丝精力,而多刷别人总结复盘记录下来的面经,有利于我们为下一次的“跨越”做好准备!笔者是一名专注研究大数据基础,架构和原型实现的“终身学者”,最近在看了108 份面经之后,想对大数据面试中高频的知识考点做一个汇总,巩固自己记忆的同时,也希望能给带给读者一些正确复习方向。本期内容我们介绍的是【Hive】篇!
2、Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能(HQL),提供快速开发的能力。Hive 本质是将 SQL 转换为 MapReduce 的任务进行运算,减少开发人员的学习成本,功能扩展很方便。拓展:1、hive 存的是和 hdfs 的映射关系,hive 是逻辑上的数据仓库,实际操作的都是hdfs 上的文件,HQL 就是用 sql 语法来写的 mr 程序 2、数据仓库是大多数企业“试水”大数据的首选切入点,因为数据仓库主要编程语言还是 SQL,而在大数据平台上,不论是 Hive 还是 SparkSQL,都是通过高度标准化的
3、SQL 来进行开发,这对于很多从传统数据仓库向大数据转型的开发人员和团队来说,是一种较为平滑的过渡。需要对 Hive 的架构有个大致的印象:Hive可以通过CLI,JDBC和 ODBC 等客户端进行访问。除此之外,Hive还支持 WUI 访问 Hive内部执行流程:解析器(解析SQL语句)、编译器(把SQL语句编译成MapReduce程序)、优化器(优化MapReduce程序)、执行器(将MapReduce程序运行的结果提交到HDFS)Hive的元数据保存在数据库中,如保存在MySQL,SQLServer,PostgreSQL,Oracle及Derby等数据库中。Hive中的元数据信息包含表名
4、,列名,分区及其属性,表的属性(包括是否为外部表),表数据所在目录等。Hive将大部分 HiveSQL语句转化为MapReduce作业提交到Hadoop上执行;少数HiveSQL语句不会转化为MapReduce作业,直接从DataNode上获取数据后按照顺序输出。拓展:这里有有个易混淆点,Hive 元数据默认存储在 derby 数据库,不支持多客户端访问,所以将元数据存储在 MySQL 等数据库,支持多客户端访问。Hive 的函数种类众多,如果一定要分类的话 这些还都是最简单的,想提高自己实力,可以私聊我获取收藏的一本 Hive 函数大全,从最简单的关系运算,到各种数值计算的函数,日期函数,条
5、件函数,字符串函数,甚至是混合函数,汇总函数等等,都有详细的解释说明.拓展:面试一般喜欢通过笔试题或者真实场景题,来让你给出 SQL 思路或者现场手写,所以了解常用的 Hive 函数非常重要,这直接就反映了自己的基本功。内部表 如果 Hive 中没有特别指定,则默认创建的表都是管理表,也称内部表。由Hive 负责管理表中的数据,管理表不共享数据。删除管理表时,会删除管理表中的数据和元数据信息。外部表 当一份数据需要被共享时,可以创建一个外部表指向这份数据。删除该表并不会删除掉原始数据,删除的是表的元数据。当表结构或者分区数发生变化时,需要进行一步修复的操作。分区表 分区表使用的是表外字段,需要
6、指定字段类型,并通过关键字 partitioned by(partition_name string)声明,但是分区划分粒度较粗。优势也很明显,就是将数据按区域划分开,查询时不用扫描无关的数据,加快查询速度。分桶表 分桶使用的是表内字段,已经知道字段类型,不需要再指定。通过关键字 clustered by(column_name)into buckets声明。分桶是更细粒度的划分、管理数据,可以对表进行先分区再分桶的划分策略 分桶最大的优势就是:用于数据取样,可以起到优化加速的作用。拓展:关于内部表,外部表,分区表,分桶表 知识的考察是面试的重点,需要留意。其中分桶逻辑为:对分桶字段求哈希值,
7、用哈希值与分桶的数量取余,余几,这个数据就放在那个桶内。Order By(全局排序)order by 会对输入做全局排序,因此只有一个 reduce(多个 reducer 无法保证全局有序),也正因为只有一个 reducer,所以当输入的数据规模较大时,会导致计算的时间较长。注意:Order by 和 数据库中的 Order by 功能一致,按照某一个或者字段排序输出。与数据库中 order by 的区别在于在 hive 的严格模式下(hive.mapred.mode=strict)下,必须指定 limit,否则执行会报错!Sort By(每个MapReduce排序)sort by 并不是全局
8、排序,其在数据进入 reducer 前完成排序。因此,如果用sort by 进行排序,并且设置 mapred.reduce.tasks1,则 sort by 只保证每个reducer 的输出有序,不保证全局有序。拓展:sort by 不受 hive.mapred.mode 是否为 strict,nostrict 的影响 sort by 的数据只能保证在同一 reduce 中的数据可以按指定字段排序 使用 sort by 你可以指定执行的 reduce 个数(set mapred.reduce.tasks=),对输出的数据再执行归并排序,即可以得到全部结果 注意:可以用 limit 子句大大减少
9、数据量。使用 limit n 后,传输到 reduce 端(单机)的数据记录数就减少到 n*(map 个数)。否则由于数据过大可能出不了结果。Distrbute By(每个分区排序)在有些情况下,我们需要控制某个特定行应该到哪个 reducer,通常是为了进行后续的聚集操作。distribute by 子句可以做这件事。distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。distribute by 和 sort by 的常见使用场景有:1.Map输出的文件大小不均 2.Reduce输出文件不均 3.小文件过多 4.文件超大 Clu
10、ster By 当 distribute by 和 sorts by 字段相同时,可以使用 cluster by 方式代替。cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序只能是 升序 排序,不能像 distribute by 一样去指定排序的规则为 ASC 或者 DESC。关于动态分区在实际生产环境中的使用也是比较的多,所以这道题出现的频率也很高,但是不难。静态分区:定义:对于静态分区,从字面就可以理解:表的分区数量和分区值是固定的。静态分区需要手动指定,列是在编译时期通过用户传递来决定的。应用场景:需要提前知道所有分区。适用于分区
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hive 高频 考点
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内