1.大表join小表产生的问题,怎么解决?
2.udf udaf udtf区别
3.hive有哪些保存元数据的方式,个有什么特点。
4.hive内部表和外部表的区别
5.生产环境中为什么建议使用外部表?
6.insert into 和 override write区别?
7.hive的判断函数有哪些
8.简单描述一下HIVE的功能?用hive创建表几种方式?hive表有几种?
9.线上业务每天产生的业务日志(压缩后>=3G),每天需要加载到hive的log表中,将每天产生的业务日志在压缩之后load到hive的log表时,最好使用的压缩算法是哪个,并说明其原因
10.若在hive中建立分区仍不能优化查询效率,建表时如何优化
11.union all和union的区别
12.如何解决hive数据倾斜的问题
13.hive性能优化常用的方法
14.简述delete,drop,truncate的区别
15.order by , sort by , distribute by , cluster by的区别
16.Hive 里边字段的分隔符用的什么?为什么用\t?有遇到过字段里 边有\t 的情况吗,怎么处理的?为什么不用 Hive 默认的分隔符,默认的分隔符是什么?
17.分区分桶的区别,为什么要分区
18.mapjoin的原理
19.在hive的row_number中distribute by 和 partition by的区别
20.hive开发中遇到什么问题?
21.什么时候使用内部表,什么时候使用外部表
22.hive都有哪些函数,你平常工作中用到哪些
sum, count, distinct, ws_concate(), expload(), subString, splite(),reverse()
23.手写sql,连续活跃用户
见29
24.left semi join和left join区别
25.group by为什么要排序
其为全局排序,为保证顺序只有一个reduceTask,
故先进行sort by 可以进行局部排序,在进行全局排序
26.说说印象最深的一次优化场景,hive常见的优化思路
参数调优:
开启map端join
开启并行化
sql调优:
使用on换where
使用couunt(1)和 子查询换 count(distinct col )
合并小文件
空值过滤,避免join时的数据倾斜
27.聊聊hive的执行引擎,spark和mr的区别?
28.hive的join底层mr是如何实现的?
29.sql问题,连续几天活跃的用户?
先按用户id和登录时间进行降序排序并打上行号,row_number over,然后使用登录时间减去行号
例如:
uid | rowNum | logDate | logDate - rowNum |
---|---|---|---|
u001 | 2021-2-12 | 1 | 2021-2-11 |
u001 | 2021-2-13 | 2 | 2021-2-11 |
u001 | 2021-2-14 | 3 | 2021-2-11 |
u001 | 2021-2-16 | 4 | 2021-2-12 |
u001 | 2021-2-18 | 5 | 2021-2-13 |
u001 | 2021-2-19 | 6 | 2021-2-13 |
根据登录时间和行号的差值进行分组排序即可得到连续登录天数
30.建好了外部表,用什么语句把数据文件加载到表里
直接将数据上传到hdfs表路径
31.Hive的执行流程?
32.hive的元数据信息存储在哪?
默认存储在嵌入式内存数据库 derby中,数据易丢失,不安全
存储在mysql中比较安全
33.sql语句的执行顺序
from-where-group by-having -select-order by -limit
34.on和where的区别
where会先执行后面的条件生成零时表然后进行过滤,
on先过滤数据然后在生成零时表
35.hive和传统数据库之间的区别
36.hive中导入数据的4种方式
从本地导入: load data local inpath /home/liuzc into table ods.test
从hdfs导入: load data inpath /user/hive/warehouse/a.txt into ods.test
查询导入: create table tmp_test as select * from ods.test
查询结果导入: insert into table tmp.test select * from ods.test