Hive面试主题

一、hive的基本
1.hive的组成
–1: metaStore(元数据):默认存在derby数据库,但多客户端进行访问时会冲突,故将数据转到Mysql中
–2:客户端
–3:四个器:编译器,解析器,优化器,执行器
–4:默认运转引擎:MR(生产环境下mr转spark、tez)//每天跑的任务用spark,临时执行的任务走tez:适合改个参数测试临时指标
–5: 数据默认存储在HDFS
–6:引擎:MR --> Spark

2.与mysql的区别
除了sql、hql查询命令以外几乎都不一样
hive走的数据量大,查询
mysql走的数据量小,增删改查

3.内部表和外部表区别
元数据:原始数据
外部表删数据只删除元数据
内部表删数据删除元数据和原始数据
∴ 建议没事建议创建外部表

4.四个by
order by: 全局拍一个reduce,用得少怕数据扎堆(数据倾斜+oom)
sort by: 排序
distribute by:分区 //分区+排序用的比较多
cluster by: 字段相同时候使用

5.系统函数




date_add
date_sub
next_day
date_format
last_day
json
get_json_object

6.自定义函数
UDF : 解析字段——一行进一行出
UDTF : 解析字段——一行进多行出
自定义UDF步骤:
定义类,继承UDF,evaluate 方法
自定义UDTF步骤:
定义类,继承G…UDTF
重写三个方法(初始化(校验返回值类型和名称)、process 关闭)

打包 + 上传 HDFS,对hive客户端注册

7.窗口函数
rank
over
topn
手写

二、hive的优化

1)小文件:
		1.JVM重用
		2.combineHiveInputFormat:多个小文件聚合到一个map进行操作
		3.merge maponly任务:  将执行完最后小于16m的文件合并为256m(真正文件层的合并)
2)map端提前combined
3)合理配置map,reduce个数。一个map占1G内存,提高单个map(默认128m)处理数据量可提高内存的可用性。适当提高reduce数可以解决一定程度的数据倾斜(默认deuce Task个数根据hive的分区个数决定)

9.数据倾斜
1.是否存在大量空值,空值的话直接过滤
1.distinct group --> group by
2.map端进行join
3.开启数据倾斜时负载均衡
set hive.groupby.skewindata = true;
4.设置多个reduce个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值