Hive经典简答题

什么是Hive?

Hive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。node

2.HIve的意义(最初研发的缘由)

减小开发人员的开发成本和学习成本。web

3.Hive的内部组成模块,做用分别是什么

元数据:描述数据的数据
内部执行流程:
解析器(解析SQL语句)、编译器(把SQL语句编译成MapReduce程序)、优化器(优化MapRedue程序)、执行器(将MapReduce程序运行的结果提交到HDFS)
正则表达式

4.Hive支持的数据格式

Text,SequenceFile,ParquetFile,ORC,RCFILEshell

5.进入Hiveshell窗口的方式?

第一种交互方式:Hive交互shell(直接经过bin/hive的方式)
第二种交互方式:Hive JDBC服务
1.启动hiveserver2服务
前台:bin/hive --service hiveserver2
2.beeline链接hiveserver2
beeline
beeline> !connect jdbc:hive2://node01:10000
数据库

6.Hive数据库、表在HDFS上存储的路径时什么?

/user/hive/warehouseapp

七、like与rlike的区别

like:like是模糊匹配查询
rlike:rlike支持正则表达式。
jvm

8.内部表与外部表的区别?

内部表删除将表的元数据和数据同时删除。
外部表的元数据被删除,数据自己不删除。
svg

9.分区表的优势是,分区字段的要求是?

优势:
指定分区查询,提升查询,分析的效率
要求:
分区字段绝对不能出如今数据表以有的字段中。
函数

十、分桶表的优势是,分桶字段的要求是?

优势:
一、对于join的需求,可以起到优化加速的做用。(前提是,join字段设置为分桶字段)
二、用于数据取样(获取/提取数据样本)
要求:
分桶字段必须是表中的字段
工具

十一、数据导入表的方式

1.直接向表中插入数据
2.经过查询插入数据
3.多插入模式
4.查询语句中建立表并加载数据
5.建立表时经过location指定加载数据路径

12.数据导出表的方式

一、将查询的结果导出到本地
二、将查询的结果格式化导出到本地
三、将查询的结果导出到HDFS上(没有local)
四、Hadoop命令导出到本地
5 、hive shell 命令导出
六、export导出到HDFS上(全表导出)
7. sqoop导出

1三、order by与sort by的区别

order by:全局排序,一个MapReduce
sort by: 对每一个分区内进行排序,对全局结果集来讲不是排序。

14.where 与having的区别?

“Where”是一个约束声明,在查询数据库的结果返回以前对数据库中的查询条件进行约束,即在结果返回以前起做用,且where后面不能使用“聚合函数”;
“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回以后进行过滤,即在结果返回以后起做用,而且having后面可使用“聚合函数”。

1五、distribute by什么时候使用,一般与哪一个联合使用?

当须要根据某个字段 进行 分区时 使用
一般与sort by 结合使用(先分区后排序)
Hive要求DISTRIBUTE BY语句要写在SORT BY语句以前。

16.Cluster by什么时候使用?

须要按照某个字段分区同时也按照这个字段进行升序排序时使用cluster by

17. distribute by+sort by(相同字段) 与Cluster by的区别?

distribute by+sort by 方式能够指定正序和倒序
Cluster 只能是正序,没法指定排序方式

18.hive -e/-f/-hiveconf分别是什么意思?

-e从命令行执行指定的HQL
-f 执行HQL脚本
-hiveconf 设置hive运行时候的参数配置

1九、hive声明参数有哪些方式,优先级是什么?

配置文件<命令行参数<参数声明

20.编写hiveUDF代码,方法名称叫什么?

evaluate

21.企业中hive经常使用的数据存储格式是什么?经常使用的数据压缩格式是什么?

存储格式是ORC,ParquetFile格式,
数据压缩格式是snappy

22.hive自定义函数的类型

自定义函数分为三个类别:
UDF(User Defined Function):一进一出
UDAF(User Defined Aggregation Function):汇集函数,多进一出(例如count/max/min)
UDTF(User Defined Table Generating Function):一进多出,如lateral view explode()

23.Fetch抓取中设置more有什么效果,设置none有什么效果?

设置成more,简单的查询语句不会转化成为MR程序
设置成none,全部查询语句都要转化成为MR程序

2四、本地模式有什么好处

在小数据量的前提下 提升了查询效率

25.当一个key数据过大致使数据倾斜时,如何处理

开启Map端聚合和功能开启局部聚合后 hive会建立两个MR 程序
第一个进行数据的局部聚合
第二个进行数据的最终汇总

2六、Count(distinct) 的替换语句如何编写

SELECT count(DISTINCT id) FROM bigtable;
替换语句
SELECT count(id) FROM (SELECT id FROM bigtable GROUP BY id) a;
先过滤在管理

2七、如何使用分区剪裁、列剪裁

列剪裁: 只拿须要的列
分区剪裁:只拿须要的分区
要什么 拿什么

28.如何理解动态分区调整

以第一个表的分区规则,来对应第二个表的分区规则,将第一个表的全部分区,所有拷贝到第二个表中来,第二个表在加载数据的时候,不须要指定分区了,直接用第一个表的分区便可

29.数据倾斜时,如何将众多数据写入10个文件

(将一个大的任务拆分红多个小任务,再次执行)
设置reduce数量(10)
1:distribute by (字段)
2 distribute by rand()

30.影响map数量的因素

文件很小时候:影响map数量的因素是文件数量
文件很大时候:影响map数量的因素是块的数量

31.reduce数量的计算是什么

公式:
N=min(参数2,总输入数据量/参数1)
参数1:每一个Reduce处理的最大数据量
参数2:每一个任务最大Reduce数量

32.并行执行有什么好处

并行执行使得多个没有依赖关系的任务同时执行,起到了提升查询效率的做用

33.严格模式不能执行哪些命令

一、不容许扫描全部分区
二、使用了order by语句查询,要求必须使用limit语句
三、限制笛卡尔积的查询

34.JVM重用有什么好处

容许多个task使用一个jvm
下降了任务启动的开销,提升了任务的执行效率
(可是,在整个任务结束前,jvm不释放,长时间占用。致使资源不足时,资源浪费)

35. 什么是MR本地模式

任务在提交SQL语句的节点上"本地执行",任务不会分配到集群

36. 什么是本地计算

数据存储到HDFS后,编写分析代码实现计算程序,程序在进行分发时,优先分发放到这个程序所使用到的数据所在的节点上。

37.先join后过滤的优化方案

1.将过滤条件写在join…on 的 on中
SELECT a.id FROM ori a LEFT JOIN bigtable b
ON (b.id <= 10 AND a.id = b.id);
2.将过滤条件写在join…on 的join,子查询过滤
SELECT a.id FROM bigtable a RIGHT JOIN (SELECT id FROM ori WHERE id <= 10 ) b ON a.id = b.id;

本文同步分享在 博客“Alice菌”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索