Hive面试题

2019-10-25  本文已影响0人  lj72808up

1. 什么是数据倾斜, 如何处理

2. 如何调整mapper个数

mapper个数受一系列参数的影响, 最终由这些参数计算出一个表达式

因此 :

最终得到mapper的个数计算公式为:
mapper\_num = MIN(split\_num, MAX(default\_mapper\_num, mapred.map.tasks))
由于 mapred.max.split.size默认为64M, 所以Hive每个map任务默认处理64M的数据(1个split)

3. 如何调整reduce个数

reducer的个数, 决定了job最后生成的文件个数, 这个数可以被用户直接指定; 若没有指定, hive会通过一个公司计算出来

4. 什么时候需要合并文件

5. 什么是严格模式?

严格模式下, hive会阻止用户进行三种类型的sql与

6. 谈谈hive的优化

select uid,upload_time,event_type,record_data f
from calendar_record_log
where day_p between '20190101' and '20190131'
order by upload_time desc,event_type desc;   

-- 这个语句在数据量很大时无法计算, 可以做如下改写

select uid,upload_time,event_type,record_data
from calendar_record_log
where day_p between '20190101' and '20190131'
distribute by uid
sort by upload_time desc,event_type desc;

7. 内部表和外部表?

内部表数据由Hive自身管理,外部表数据由HDFS管理;删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除。

8. 分区表和分桶表的区别

上一篇 下一篇

猜你喜欢

热点阅读