hive相关问题
1.表述hive和hadoop的关系:
hive存储数据实在hdfs上,hive计算的底层使用的mapreduce,执行的程序运行在yarn上
2.hive的内部表和外部表的区别:
内部表删除数据会把元数据和数据都删除
外部表只删除元数据不会删除存储在hdfs上的数据
3.hive创建表有几种方式,分别是哪几种:
有3中,分别为:create table 表名;create table 表名 as select .....from ....;create table 表名 like 表名;
4.hive向表中装在数据的方式,分别为:
有3种。分别为:load data 。。。。。。;insert overwrite table。。。;insert 插入方式。。。。
5.hive中有几种排序方式:
4种。
order by:全局排序;
sort by:对每一个Reduce内部排序,对全局没有排序;
distribute by:对数据进行分区,通常接合sort by进行使用
cluster by:当distribute by 和sort by字段相同时,可以使用cluster by
6.描述hive中实现UDF的步骤:
继承org.apache.hadoop.hive.ql.UDF,需要实现evaluate函数,编写代码
打包上传
加载架包 :add jar /home/lan/jar/udflower.jar;
注册临时函数:create temporary function my_lower as 'com.udf.org.LowerUDF';
使用
7.通过什么命令可以查看hive执行计划,即可以转化成几个MapReduce任务?
explain select * from emp;
8.简单简述一下hive的优化方案:
a.FetchTack(抓取任务):直接抓取数据出来,在配置文件中可以设置hive-default.xml.tmplate
b.大表拆分成小表
c.分区表
d.数据的存储格式(textfile/orcfile/qarquet)
e.sql优化
9.hive产生数据倾斜的原因和解决方法:
产生数据倾斜的原因:
1.key分布不均匀
2.业务数据本身的特性
3.某些SQL语句本身就有数据倾斜
解决方案:
1.调节参数
2.调节sql语句
10.对桶表的理解:
就是对hive的进一步细化和组织成桶,对一个表或者分区进行细化。
11.实例:
汽车销售实例: