hive学习心得

此博文是自己学习hive的一些学习心得,可能有些地方理解的不对,如有不妥之后,忘能不吝赐教!!!

目录

hive是什么

数据操作

执行原理

分区

分桶


hive是什么

hive从本质上来说是一个仓库,是一个分析框架,它本身不存储数据,连最起码的元数据信息也不存储。

它可以通过mysql或(Derby)对存放在hdfs上面的数据进行映射,其中元信息存放在mysql或Derby中。

它完全依赖HDFS和MapReduce。

数据操作

经过映射后的数据,在hive看来就可以认为是一张类似数据库中的一张表了,可以使用HQL(类似SQL)语言对数据进行操作。hive在0.14版本之前是不支持行级别的插入的,每次更新必须全量覆盖;在0.14版本之后,默认行级别的插入、更新、删除操作也是不支持的,需要更改配置实现。

执行原理

HQL执行时,是通过hive内置的HQL解析引擎,将HQL预计翻译成一个或多个MapReduce任务执行,MapReduce执行速度毕竟慢,由此可以看出,Hive处理数据一般是在离线情况下对数据进行分析的,如果是要对数据进行实时的处理的任务,Hive不能胜任。

分区

在hive中执行select操作,一般会对整张表进行扫描,为了使查询更高效,可以在根据数据表中的某一列进行分区操作,比如存储的是用户的日志数据,可以根据日志的时间按天分区,这样在hdfs时间存储的时候,每个分区的数据会存在单独的文件夹中,对数据进行检索时,可以指定分区进行检索,这样可以大大增加检索效率。当然一个表可以存在多个分区,也可以在某个分区的基础上再进行分区,比如先按照国家分区,再按照时间分区。【分区字段不会在数据中实际存储】

分桶

分桶是hive支持的另一种高效检索数据的方式,分桶是对某列的数据求hash值,然后再对此值与分桶数N进行取余数操作,比如余数为0,则数据放在0号桶中。分桶字段在数据列中是实际存在的。

你可能感兴趣的:(大数据)