锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn/#/introductionPage。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:
1.Hive底层与数据库交互原理?
由于Hive的元数据可能要面临不断地更新、修改和读取操作,所以它显然不适合使用Hadoop文件系统进行存储。目前Hive将元数据存储在RDBMS中,比如存储在MySQL、Derby中。元数据信息包括:存在的表、表的列、权限和更多的其他信息。
2.Hive中row_number(),rank()和dense_rank()的区别?
row_number():根据查询结果的顺序计算排序,多用于分页查询
rank():排序相同时序号重复,总序数不变
dense_rank():排序相同时序号重复时,总序数减少
3.Hive中常用的系统函数有哪些?
date_add(str,n)、date_sub(str,n) 加减时间
next_day(to_date(str),’MO’) 周指标相关,获取str下周一日期
date_format(str,’yyyy’) 根据格式整理日期
last_day(to_date(str)) 求当月最后一天日期
collect_set(col) 收集数据返回一个以逗号分割的字符串数组
get_json_object(jsondata,’$.object’) 解析json,使用'$. object’获取对象值
NVL(str,replace) 空字段赋值,str为空返回replace值;两个都为空则返回null
4.Hive如何实现分区?
建表:create table tablename(col1 string) partitioned by(col2 string);
添加分区:alter table tablename add partition(col2=’202101’);
删除分区:alter table tablename drop partition(col2=’202101’);
5.Hive导入数据的五种方式?
1. Load方式,可以从本地或HDFS上导入,本地是copy,HDFS是移动
本地:load data local inpath ‘/root/student.txt’ into table student;
HDFS:load data inpath ‘/user/hive/data/student.txt’ into table student;
2. Insert方式,往表里插入
insert into table student values(1,’zhanshan’);
3. As select方式,根据查询结果创建表并插入数据
create table if not exists stu1 as select id,name from student;
4. Location方式,创建表并指定数据的路径
create external if not exists stu2 like student location '/user/hive/warehouse/student/student.txt';
5. Import方式,先从hive上使用export导出在导入
import table stu3 from ‘/user/export/student’;