《Hive》小节测评

第七题引用致谢:
https://blog.csdn.net/qq_38989232/article/details/103860618

《Hive》小节测评

1.Hive的内部表和外部表的区别是什么?
(1)外部表只删除元数据,不删除实际数据,可得5分
(2)内部表都删掉即可,可得5分
2.Hive分区表的作用?静态分区和静态分区的区别是什么?
(1)分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,大意正确即可得4分
(2)动态分区在插入数据时,不指定具体的分区列值,而是仅仅指定分区字段,大意正确可得6分
3.Order by,sort by,distribute by,cluster by的区别是什么?
(1)order by:全局有序,只有一个reduce,可得4分
(2)sort by:分区有序,多个reduce,可得4分
(3)distribute by:类似MR中的partition,可得3分
(4)cluster by:等价于distribute by + sort by,可得4分
4.什么是视图?视图的应用场景有哪些?
(1)①只是一个逻辑结构,②只保存定义不存储数据,可得4分
(2)①将特定的列提供给用户,②查询复杂,隐藏子查询,可得6分
5.Hive中UDF函数需继承哪一个类?重写哪一个方法?
(1)继承UDF类或GenericUDF类(5分)
(2)重写evaluate方法(5分)
6.列举5个聚合考试
sum()求和
avg()平均值
max()最大值
min()最小值
count()计数
7.常见的Hive优化方式有哪些?
(1)本地模式:
有时Hive的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能会比实际job的执行时间要多的多
(2)JVM重用
对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短,JVM的启动过程可能会造成相当大的开销
(3)并行执行
Hive会将一个查询转化成一个或者多个阶段。某个特定的job可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短。
(4)查询优化(Map端join等)
如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join。容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在map端进行join,避免reducer处理。
(5)采用压缩格式
压缩可以节约磁盘的空间,压缩可以增加吞吐量和性能量(减小载入内存的数据量),
8.如何防止数据倾斜?
增加jvm内存
自定义分区
重新设计key
调整map数
小文件使用combinner合并,减少map数
复杂文件增加map数
调整reduce数
9.使用Hive计算num列的sum值

itemnumsum
A1,2,3,4
B2,5,1

建表语句

create table test2(
item string,
num string
)
stored as textfile;

插入数据

insert into test2 values("A","1,2,3,4");
insert into test2 values("B","2,5,1");

查询语句(查询语句写正确即可, 无需建表和插入数据)

select item,num,
sum (c) as sum 
from test2 lateral view explode(split(num,",")) tmp as c
group by item,num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值