Hive经典简答题
【摘要】
什么是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)