Hive面试汇总(2022)

本文介绍了Hive的主要架构和元数据存储,强调了Hive与传统数据库的区别,如数据存储位置、更新、执行引擎和扩展性。还讨论了Hive的内部表和外部表、排序关键字的区别以及Hive中的窗口函数和自定义函数。此外,提到了Hive数据导入导出的方式以及如何实现分区。
摘要由CSDN通过智能技术生成

Hive面试汇总(2021)

  1. 简述Hive主要架构及解析成MR的过程
    Hive元数据默认存储在derby数据库,不支持多客户端访问,所以需要将元数据存储在MySQL中,才支持多客户端访问。主要架构如下:

Hive解析成MR的过程:

   Hive通过给用户提供一系列交互接口,接收到用户的指令(sql语句),结合元数据(metastore),经过Driver内的解析器,编译器,优化器,执行器转换成mapreduce(将sql转换成抽象语法树AST的解析器,将AST编译成逻辑执行计划的编译器,在对逻辑执行计划进行优化的优化器,最后将逻辑执行计划转换成mapreduce),提交给hadoop中执行,最后将执行返回的结果输出到用户交互接口。
  1. Hive与传统数据库的区别
    Hive和数据库除了拥有类型的查询语言外,无其他相似

存储位置:Hive数据存储在HDFS上。数据库保存在块设备或本地文件系统
数据更新:Hive不建议对数据改写。数据库通常需要经常修改
执行引擎:Hive通过MapReduce来实现。数据库用自己的执行引擎
执行速度:Hive执行延迟高,但它数据规模远超过数据库处理能力时,Hive的并行计算能力就体现优势了。数据库执行延迟较低
数据规模:hive大规模的数据计算。数据库能支持的数据规模较小
扩展性:Hive建立在Hadoop上,随Hadoop的扩展性。数据库由于ACID语义[wh1] 的严格限制,扩展有限
3. Hive内部表和外部表的区别
存储:外部表数据由HDFS管理;内部表数据由hive自身管理
存储:外部表数据存储位置由自己指定(没有指定location则在默认地址下新建);内部表数据存储在hive.metastore.warehouse.dir(默认在/uer/hive/warehouse)
创建:被external修饰的就是外部表;没被修饰是内部表
删除:删除外部表仅仅删除元数据;删除内部表会删除元数据和存储数据
4. Hive中order by,sort by,distribute by和cluster by的区别
order by:对数据进行全局排序,只有一个reduce工作
sort by:每个mapreduce中进行排序,一般和distribute by使用,且distribute by写在sort by前面。当mapred.reduce.tasks=1时,效果和order by一样
distribute by:类似MR的Partition,对key进行分区,结合sort by实现分区排序
cluster by:当distribute by和sort by的字段相同时,可以使用cluster by代替,但cluster by只能是升序,不能指定排序规则
在生产环境中order by使用的少,容易造成内存溢出(OOM)

生产环境中distribute by和sort by用的多

  1. row_number(),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值