揭秘hive常见面试题(一)-20道

举报
bigdata张凯翔 发表于 2021/03/29 01:15:38 2021/03/29
【摘要】 1)hive 的使用,内外部表的区别,分区作用, UDF 和 Hive 优化 (1)hive 使用:仓库、工具 (2)hive 内部表:加载数据到 hive 所在的 hdfs 目录,删除时,元数据和数据文件都删除 外部表:不加载数据到 hive 所在的 hdfs 目录,删除时,只删除表结构。 (3)分区作用:防止数据倾斜 (4)UDF 函数:用户自定义的函数 (主要解决格式,计...

1)hive 的使用,内外部表的区别,分区作用, UDF 和 Hive 优化

(1)hive 使用:仓库、工具
(2)hive 内部表:加载数据到 hive 所在的 hdfs 目录,删除时,元数据和数据文件都删除
外部表:不加载数据到 hive 所在的 hdfs 目录,删除时,只删除表结构。
(3)分区作用:防止数据倾斜
(4)UDF 函数:用户自定义的函数 (主要解决格式,计算问题 ),需要继承 UDF 类
java 代码实现

class TestUDFHive extends UDF {
public String evalute(String str){
try{
return "hello"+str
}catch(Exception e){
return str+"error"
}
}
}

(5)Hive 优化:看做 mapreduce 处理
排序优化: sort by 效率高于 order by
分区:使用静态分区 (statu_date="20160516",location="beijin") ,每个分区对应 hdfs 上
的一个目录,减少 job 和 task 数量:使用表链接操作,解决 groupby 数据倾斜问题:设置 hive.groupby.skewindata=true ,那么 hive 会自动负载均衡,小文件合并成大文件:表连接操作,使用 UDF 或 UDAF 函数:
http://www.cnblogs.com/ggjucheng/archive/2013/02/01/2888819.html

2)使用 Hive 或者自定义 MR 实现如下逻辑

image.png

字段解释:
product_no:用户手机号;
lac_id:用户所在基站;
start_time:用户在此基站的开始时间;
staytime:用户在此基站的逗留时间。
需求描述:
根据 lac_id 和 start_time 知道用户当时的位置,根据 staytime 知道用户各个基站的逗留时长。根据轨迹合并连续基站的 staytime。最终得到每一个用户按时间排序在每一个基站驻留时长。
期望输出举例:


image.png

3)你们的数据是用什么导入到数据库的?导入到什么数据库?

4)你们业务数据量多大?有多少行数据?(面试了三家,都问这个问题)

5)你们写 hive 的 hql 语句,大概有多少条?

6)hive 跟 hbase 的区别是?

共同点:
1.hbase 与 hive 都是架构在 hadoop 之上的。都是用 hadoop 作为底层存储
区别:
2.Hive 是建立在 Hadoop 之上为了减少 MapReduce jobs 编写工作的批处理系统,HBase
是为了支持弥补 Hadoop 对实时操作的缺陷的项目 。
3.想象你在操作 RMDB 数据库,如果是全表扫描,就用 Hive+Hadoop,如果是索引访问,
就用 HBase+Hadoop 。
4.Hive query 就是 MapReduce jobs 可以从 5 分钟到数小时不止,HBase 是非常高效的,
肯定比 Hive 高效的多。
5.Hive 本身不存储和计算数据,它完全依赖于 HDFS 和 MapReduce,Hive 中的表纯逻辑。
6.hive 借用 hadoop 的 MapReduce 来完成一些 hive 中的命令的执行
7.hbase 是物理表,不是逻辑表,提供一个超大的内存 hash 表,搜索引擎通过它来存
储索引,方便查询操作。
8.hbase 是列存储。
9.hdfs 作为底层存储,hdfs 是存放文件的系统,而 Hbase 负责组织文件。
10.hive 需要用到 hdfs 存储文件,需要用到 MapReduce 计算框架。

7)你们处理数据是直接读数据库的数据还是读文本数据?

8)你们提交的 job 任务大概有多少个?这些 job 执行完大概用多少时间?

9)reduce 后输出的数据量有多大?

10)你自己写过 udf 函数么?写了哪些?作用是什么?常考点

11)你在项目中主要的工作任务是?常考点

15)hive 有哪些保存元数据的方式,个有什么特点。

1、 内存数据库 derby,安装小,但是数据存在内存,不稳定
2、 mysql 数据库,数据存储模式可以自己设置,持久化好,查看方便

16)生产环境中为什么建议使用外部表?

1、因为外部表不会加载数据到 hive,减少数据传输、数据还能共享。
2、hive 不会修改数据,所以无需担心数据的损坏
3、删除表时,只删除表结构、不删除数据。

18)你们数据库怎么导入 hive 的, 有没有出现问题

在导入hive的时候,如果数据库中有blob或者text字段会报错,解决方案在sqoop笔记中

19)Hive 你们用的是外部表还是内部表, , 有没有写过 UDF,hive 的版本外部表和内部表的区别

文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/cf953bc1998f

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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