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

网友投稿 817 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:用户在此基站的逗留时间。

需求描述:

根据 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 是列存储。

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

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 基本简介
下一篇:(非)对称加密
相关文章