Hive常见面试问题(持续更新)
Hive常见面试问题
目录
- Hive 内部表和外部表的区别,以及各自使用于哪种环境?Hive和传统数据库的区别?
- HiveRc 文件?
- Hive 分区?
- Hive 分区过多有何坏处以及分区时的注意事项?
- Hive 中复杂数据类型的使用好处和坏处?
- Hive 分桶?
1. Hive 内部表和外部表的区别,以及各自使用于哪种环境?Hive和传统数据库的区别?
主要体现在 load 和 drop (是否同时删除元数据与数据)的操作上。
Hive 创建内部表时,会将数据移动到数据仓库指向的路径,hive 管理数据的声明周期;若创建外部表,仅记录数据所在的路径,不会对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,同时对于一些 hive 操作不适应于外部表,比如单个查询语句创建表并向表中插入数据。
外部表只删除元数据,不删除数据。这样外部表相对来说更安全一些,数据组织也更加灵活,方便共享源数据。创建外部表时甚至不需要知道外部数据是否存在,可以把创建数据推迟到创建表之后才进行。
区别:
- 需要注意的是传统数据库对表数据检验是 schema on write(写时模式)而 Hive 在 load时不检查数据是否符合 schema 的,hive 遵循的是 schema on read(读时模式),只有在读的时候 hive 才检查、解析具体的数据字段、schema。读时模式的优势是 load data 非常迅速,因为它不需要读取数据进行解析,仅仅进行文件的复制或者移动。写时模式的优势是提升了查询性能,因为预先解析之后可以对列建立索引并压缩,但这样会花费较多的加载时间。即使为内部表在数据加载时也不解析数据格式,如果数据和模式不匹配,只能在查询时出现 null 才知道不匹配的行。
- hive 具有复杂的数据结构(数组,映射,结构体)
- hive 不支持实时数据处理,对索引的支持较弱。
- hive 不支持行级的插入。
- 延迟高,数据量大,多存储在 hdfs 上。
- 执行为 mapreducer。
- hive 不支持行级操作也不支持事务。
选择:内部表和外部表没有太大的区别。如果所有的数据都用hive 处理,则创建内部表。如果数据的处理需要 hive 和其他工具一起处理,则创建外部表。
但是管理部不方便和其他工作共享数据。例如,假设我们有一份由 pig 或者其他工作创建并且主要由这一工具使用的数据。同时我们还想使用 Hive 在这份数据上执行一些查询,可是并没有给与 Hive对数据的所有权,我们就可以创建一个外部表指向这份数据,而并不需要对其具有所有权。
2. HiveRc文件?
Hive 启动时,会先执行 HiveRc文件。例如每次都会使用的 UDF,UDAF 等用户自定义函数,不必每次都命名,可以直接写入HvieRc文件。
3. Hive分区?
是对 hive 表的一种组织形式,可以加快查询,是一种对表进行粗略划分的机制。使用分区时,在表目录下会有相应的子目录,当查询时若添加了分区谓词,该查询会定位到相应的子目录中进行查询,避免全表扫描,比如日志文件分析,将日志按天存储。分区并不会影响大范围的查询。
外部表也可以分区,具有很好的灵活性,例如
这种灵活性有一个有趣的优点是我们可以使用像 Amazon S3 这样的廉价的存储设备存储旧的数据,同时保持较新的数据到 HDFS 中。例如,每天我们可以使用如下的处理过程将一个月前的旧数据转移到 S3 中。
4. Hive 分区过多有何坏处以及分区时的注意事项?
- 当分区过多且数据很大时,可以使用严格模式,避免触发一个大的 mapreducer 任务。当分区数量过多且数据量较大时,执行宽范围的数据扫描会触发一个很大的 mapreducer 任务,在严格模式下,当 where 中没有分区过滤条件时会禁止执行。
- hive 如果有过多的分区,由于底层是存储在 HDFS 上,HDFS适用于存储大文件而非小文件,因此过多的分区会增加 namenode 负担。
- hive 会转化成 mapreducer,mapreducer 会转化为多个 task,过多的小文件的话,每个文件一个task,每个task 一个 jvm实例,jvm 开启与销毁会降低系统效率。
注意事项:合理的分区不应该有过多的分区和文件目录,并且每个目录下的文件应该足够大。
5. Hive 中复杂数据类型的使用好处和坏处?
- 好处:由于复杂数据类型,存储数据比基本数据类型要多,在存盘上存储可以连续存储,在查询等操作时可以减少磁盘 IO;
- 坏处:复杂数据类型可能会存在着数据的重复,而且有更大的导致数据不一致的风险。
6. Hive 分桶?
桶是更细粒度的划分,把表划分成桶的理由:
- 取样更高效。具体划分桶是将值进行hash,然后除以桶的个数取余,任何一个桶内部是一个随机划分的用户集合。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分上试运行查询,会方便很多。
- 获得更高的查询处理效率。桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构。具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接(Map-side join)高效的实现。处理左边表的某个桶的 mapper 就知道右边表内相匹配的行在对应的桶,这样 mapper 直接就可以在对应的右边表的桶获取数据进行 join。并不一定要求两个表必须有相同的桶的个数,倍数也行。
具体划分桶是将值进行hash,然后除以桶的个数取余。
1. Hive 内部表和外部表的区别,以及各自使用于哪种环境?Hive和传统数据库的区别?
1. Hive 内部表和外部表的区别,以及各自使用于哪种环境?Hive和传统数据库的区别?
1. Hive 内部表和外部表的区别,以及各自使用于哪种环境?Hive和传统数据库的区别?
1. Hive 内部表和外部表的区别,以及各自使用于哪种环境?Hive和传统数据库的区别?
Hive常见面试问题(持续更新)相关推荐
- Jenkins常见问题解决(持续更新)
Jenkins常见问题解决(持续更新) 参考文章: (1)Jenkins常见问题解决(持续更新) (2)https://www.cnblogs.com/XhyTechnologyShare/p/120 ...
- JAVA面试大全(持续更新中...)
本文旨在收集Java面试过程中出现的问题,力求全面,仅作学习交流,欢迎补充,持续更新中-,部分段落选取自网上,部分引用文章已标注,部分已记不清了,如侵权,联系本人 Java基础 1.面向对象的概述 面 ...
- 计算机基础面试(持续更新中)
一.计算机网络 TCP/UDP TCP/IP即传输控制协议,是面向连接的协议,发送数据前要先建立连接,TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达.(类似 ...
- 2021React面试精选——持续更新
目录 React的请求应该放在哪个⽣命周期中 jsx的本质是什么 React组件通信如何实现 React最新的⽣命周期是怎样的 setState到底是异步还是同步 React中keys的作用是什么 受 ...
- 嵌入式面试总结(持续更新)
文章目录 1. 字符串数组打印(指针的步长) 1.1 指针变量+1 1.2 字符串数组的步长 1.3 跨行加⭐⭐⭐⭐⭐ 例子[1] 例子[2] 2.大端小端 3.异步IO和同步IO区别 4.变量a的不 ...
- 面试问题,持续更新...
1.<label></label>标签在IE下无法使用,只需要在显示的标签后加上disabled="disabled"就好了; 2.被Native修饰的方法 ...
- 万能的 JS(万字、基础、原理、面试、持续更新。。。)
万能的 JS 心无杂念,行路也将势如破竹. 万能的 JS JS(JavaScript 轻量级动态脚本语言) 面向对象思想: 作用域 预解释 (变量提声) 浏览器天生自带 JS 中内存的分类 JS 数据 ...
- java高级面试视频,持续更新~
Java高级工程师面试:Java中反射机制的理解!反射机制的使用原理深入理解Java中的反射反射的概念反射的原理反射的主要用途反射的运用获得Class对象判断是否是某个类的实例创建实例获取方法获取构造 ...
- 京东C++开发面试(持续更新)
京东2020秋招正式批 初面(电话面) 二面 总结 2020-08-11下午4点面试官打电话过来,整个初面大概半个多小时吧,初面主要问的可能还是简历上的东西和一些基础的技能知识. 初面(电话面) 1. ...
最新文章
- css3的动画特效--动画序列(animation)
- 每日英语:Why is Ye Shiwen’s Swim “Disturbing”?
- 信息学奥赛一本通(2063:【例1.4】牛吃牧草)
- Visual SourceSafe(VSS)使用手册(转载)
- Hanlp得到语义相似度的方法
- GitLab5.3修改项目仓库名称后wiki不能访问
- centos7之关于时间和日期以及时间同步的应用
- Qt + 运动控制 (固高运动控制卡)【2】运动控制卡初始化和关闭
- 实用网站汇总(不定期更新)
- 良心分享!最全面cmd快捷指令及使用方法,万字总结
- Shell脚本实现俄罗斯方块小游戏
- 祝贺光环2014年6月28日PMP考试通过率90.28%
- 不仅会编程还要会英语(博主英语小笔记)1.1名词
- Java打开exe文件
- Uva 11584 线性DP
- idea中的xml文件怎么直接在idea中通过浏览器打开
- [转载]华为的云计算转型:逼出来的开放
- 集群环境下,谁偷走quartz配置的定时任务
- 【3dsmax新手入门】-实体立方八面晶体绘制
- 花开再会,BIGBANG十周年回顾大展北京站于12月7日开幕
热门文章
- DOM与元素节点内联样式
- 成功更新至Win8.1 update
- struts2:多业务方法的处理(动态调用,DMI)
- cron4j的Jfinal plugin
- 高级语言反汇编程序的函数调用过程
- 查看数据库系统字符集
- CodeForces - 1450C2 Errich-Tac-Toe (Hard Version)(思维+构造)
- CodeForces - 1453D Checkpoints(概率+构造)
- CodeForces - 1110G Tree-Tac-Toe(博弈+构造)
- HDU - 3555 Bomb(数位dp)