大数据面试题之HIVE(完)

本文是笔者在面试过程中被问到次数最多的一些问题,特此记录

8.常用的hive导入数据的方式

  • 从本地导入数据到表中
load data local '本地路径' into 表名称
  • 从hdfs导入数据到表中
load data inpath 'hdfs路径' into 表名称
  • 表已存在,从别的表中查出数据导入到表中
  • 建表的时候从别的表中查出数据导入到表中(表并不存在)

9.常用的hive导出数据的方式

  • 导出表中数据到本地
insert overwrite local directory '本地路径'
  • 导出表中数据到hdfs
insert overwrite directory 'hdfs路径'
  • 使用sqoop也可以,但是已经被淘汰了

10. Hive和RDBMS的区别

1.Hive是个数据仓库,存储的数据量是很庞大的,一般我们用hive做数据分析,而传统的RDBMS数据库存储的数据量一般不会很大,并且大部分的RDBMS都是支持事务的,Hive是没有事务支持的
2.Hive的计算引擎是MR,存储引擎是HDFS,支持一种叫做HQL的语法,可以将SQL语句转化为MR进行执行,速度相对较慢,而RDBMS使用的是标准SQL,有索引等概念
3.Hive的可扩展性高,并且存储性能强大,RDBMS如果想要进行扩展等,就需要添加硬件等,比较麻烦

11.hive的数据倾斜是如何解决的?

hive的数据倾斜一般造成的原因就是表的设计不周到,key值分布不均匀,业务数据本身就导致的数据倾斜以及使用HQL的时候导致的数据倾斜

当遇到数据倾斜的时候一般是先从HQL上面进行处理,在进行表关联的时候,将数据量小的表放到内存中,并且尽量少的使用聚合函数,如果还是会发生数据倾斜问题,就得从配置参数上进行调节,开启数据倾斜时候的负载均衡,开启map端的聚合操作等

12.hive的优化?

1.join连接时的优化,在表和表关联的时候,尽量使用On将俩个表进行关联操作,可以只产生一个MR
2.join连接时的优化,在表和表关联的时候,可以将数据量小的表放在左边,因为hive在进行表关联的时候,会将扫描过的表进行缓存处理,全部扫描完毕后才会执行
3.在where后添加分区过滤器
4.在进行表关联的时候,尽量多的使用left semi join,少使用inner join,因为leftsemi join在扫描到数据后就会直接返回,停止扫描,提高效率
5.可以将数据量小的表给放到内存中,其它表在和其进行关联的时候就可以直接匹配,不需要产生MR
6.合理的设置MR和Reudce的数量

13.hive解析hql转化为MR的过程

1.将HQL进行解析
2.解析完的HQL进行编译,编译为一个job任务
3.对job任务进行优化
4.调用Hadoop进行执行

14.hive的元数据包含有哪些?

表的名称,表的属性,表的数据所在的目录等

15.hive分区分桶?

分区:文件夹
分桶:文件分区和分桶最大的区别就是分区是非随机分割数据库,而分桶是随机分割数据库(用的hash算法)当分区数量过大可能导致系统崩溃,就得使用分桶操作,将分区中的数据按照分桶处理,分桶是对分区进行更加细粒度的划分

16.开窗函数区别?

rank() 出现排名相同的会并列但占位 1 2 2 4 5
dense_rank() 出现排名相同的会并列但不占位 1 2 2 3 4
row_number() 正常的顺序 1 2 3 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值