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

网友投稿 895 2022-05-30

(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

image.png

字段解释:

product_no:用户手机号;

lac_id:用户所在基站;

start_time:用户在此基站的开始时间;

staytime:用户在此基站的逗留时间。

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

需求描述:

根据 lac_id 和 start_time 知道用户当时的位置,根据 staytime 知道用户各个基站的逗留时长。根据轨迹合并连续基站的 staytime。最终得到每一个用户按时间排序在每一个基站驻留时长。

期望输出举例:

image.png

共同点:

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 计算框架。

1、 内存数据库 derby,安装小,但是数据存在内存,不稳定

2、 mysql 数据库,数据存储模式可以自己设置,持久化好,查看方便

1、因为外部表不会加载数据到 hive,减少数据传输、数据还能共享。

2、hive 不会修改数据,所以无需担心数据的损坏

3、删除表时,只删除表结构、不删除数据。

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

Hadoop Hive

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker系列之1 基本简介
下一篇:(非)对称加密
相关文章