Hive面试问题1

A所有的hive任务都会有reducer的执行吗?

答:不是,由于当前hive的优化,使得一般简单的任务不会去用reducer任务;只有稍微复杂的任务才会有reducer任务

举例:使用select * from person ; 就不会有reducer

      使用from person p 

                  insert  into  person2 select p.age,p.name  

 

B\hive解决了什么问题

答:多用户的使用,解决了元数据的冲突,hive2代理管理元数据       

    区别hive2,hiveserver2是服务,而hive是一个交互窗口

 

C\设置时钟同步的定时任务

crontab -e

*/10 * * * * /usr/sbin/ntpdate time.nist.gov

 

D\hive的函数:UDF  UDAF UDTF的区别

UDF:   单行进入,单行输出

UDAF:  多行进入,单行输出

UDTF:  单行输入,多行输出

 

E\hive的优化

答:优化可以从几个方面着手:

    1. 好的模型设计事半功倍。

    2. 解决数据倾斜问题。

3. 减少 job 数。

4. 设置合理的 map reduce 的 task 数,能有效提升性能。(比如,10w+级别的计算,用

        160 个 reduce,那是相当的浪费,1 个足够)。

5. 自己动手写 sql 解决数据倾斜问题是个不错的选择。set hive.groupby.skewindata=true;

   这是通用的算法优化,但算法优化总是漠视业务,习惯性提供通用的解决方法。 Etl 开发

   人员更了解业务,更了解数据,所以通过业务逻辑解决倾斜的方法往往更精确,更有效。

6. 对 count(distinct)采取漠视的方法,尤其数据大的时候很容易产生倾斜问题,不抱侥幸

      心理。自己动手,丰衣足食。

7. 对小文件进行合并,是行至有效的提高调度效率的方法,假如我们的作业设置合理的文

件数,对云梯的整体调度效率也会产生积极的影响。

8. 优化时把握整体,单个作业最优不如整体最优。

 

F优化:

1\排序优化

Order by 实现全局排序,一个 reduce 实现,效率低

Sort by  实现部分有序,单个 reduce 输出的结果是有序的,效率高,通常和

DISTRIBUTE BY 关键字一起使用(DISTRIBUTE BY 关键字 可以指定 map 到 reduce

端的分发 key)

CLUSTER BY col1 等价于 DISTRIBUTE BY col1 SORT BY col1

2\分区优化

3\合并小文件

4\避免空值关联,多用聚合函数,多用临时表
--------------------- 
作者:highfei2011 
来源:CSDN 
原文:https://blog.csdn.net/high2011/article/details/51594990 
版权声明:本文为博主原创文章,转载请附上博文链接!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值