Hive经典简答题

举报
大数据梦想家 发表于 2021/09/29 01:43:33 2021/09/29
【摘要】 什么是Hive? Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。 2.HIve的意义(最初研发的原因) 减...

什么是Hive?

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

2.HIve的意义(最初研发的原因)

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

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

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

4.Hive支持的数据格式

Text,SequenceFile,ParquetFile,ORC,RCFILE

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/warehouse

7、like与rlike的区别

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

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

内部表删除将表的元数据和数据同时删除。
外部表的元数据被删除,数据本身不删除。

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

优点:
指定分区查询,提高查询,分析的效率
要求:
分区字段绝对不能出现在数据表以有的字段中。

10、分桶表的优点是,分桶字段的要求是?

优点:
1、对于join的需求,能够起到优化加速的作用。(前提是,join字段设置为分桶字段)
2、用于数据取样(获取/提取数据样本)
要求:
分桶字段必须是表中的字段

11、数据导入表的方式

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

12.数据导出表的方式

1、将查询的结果导出到本地
2、将查询的结果格式化导出到本地
3、将查询的结果导出到HDFS上(没有local)
4、Hadoop命令导出到本地
5 、hive shell 命令导出
6、export导出到HDFS上(全表导出)
7. sqoop导出

13、order by与sort by的区别

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

14.where 与having的区别?

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

15、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运行时候的参数配置

19、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程序

24、本地模式有什么好处

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

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

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

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

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

27、如何使用分区剪裁、列剪裁

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

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.严格模式不能执行哪些命令

1、不允许扫描所有分区
2、使用了order by语句查询,要求必须使用limit语句
3、限制笛卡尔积的查询

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.blog.csdn.net,作者:大数据梦想家,版权归原作者所有,如需转载,请联系作者。

原文链接:alice.blog.csdn.net/article/details/103319552

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。