Hive面试题

1、说说Hive中的内部表和外部表?

Managed Table                                         External Table。

默认                                                           创建时加上external关键字

数据由Hive管理                                         数据由HDFS管理

删除表(删除元数据和数据)                    删除表(只删除元数据)

存储位置(/user/hive/warehouse)           存储位置(自定义)
修改内部表会同步元数据                           修改外部表则需要执行MSCK REPAIR TABLE table_name刷新元数据

alter table emp set TBLPROPERTIES('EXTERNAL'='TRUE');//内部表转化成外部表
alter table emp set TBLPROPERTIES('EXTERNAL'='FALSE');//外部表转成内部表

 

select中出现的字段,如果没有出现在组函数/聚合函数中,必须出现在group by里面,否则就会产生报错

 

2、where和having的区别?
where 是对当条记录进行筛选,having是对分组后的结果进行筛选的 

 

hive> select deptno,avg(salary) from ruozedata_emp group by deptno having avg(salary) >2000;

hive> select deptno avg(salary) from ruozedata_emp where avg(salary) >2000 ;

 

3、说说Hive中的join。

hive> select * from a;

1      ruoze

2       j

3       k

hive> select * from b;

1         30

2         29

4         21

A、inner join=join

hive> select a.id,a.name,b.age from a join b on a.id=b.id;

1     ruoze     30

2     j             29

B、left join

hive> select a.id,a.name,b.age from a left join b on a.id=b.id;

1     ruoze     30

2     j             29

3     k            NULL

C、right join

hive> select a.id,a.name,b.age from a right join b on a.id=b.id;

1          ruoze     30

2          j             29

NULL   NULL     21

D、full join

hive> select a.id,a.name,b.age from a left join b on a.id=b.id;

1         ruoze         30

2         j                 29

3         k                NULL

NULL NULL         21

E、left semi join

hive> select a.id,a.name,b.age from a left join b on a.id=b.id;

1         ruoze         

2         j  

 

4、 case when then end 根据已有的字段取一个常用的标识:

hive> select ename, salary,

      > case

      > when salary > 1 and salary <= 1000 then 'LOWER'

      > when salary > 1000 and salary <= 2000 then 'MIDDLE'

      > when salary > 2000 and salary <= 4000 then 'HIGH'

      > ELSE 'HIGHEST'

      > end

      > from ruozedata_emp;

   

5、     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值