2021-04-01 14:52:26

Hive入门教程(一):初次见面 Hive 简介


Hive入门教程(一):初次见面 Hive 简介

在完成之前的 Hadoop 入门系列教程以后,现在才开始真正的接触数据仓库,我们先了解一下 Hadoop 生态圈中的 Hive 是什么。

Hive 是什么

Hive是一个基于Apache Hadoop的数据仓库。由Facebook开源用于解决海量结构化日志的数据统计。他能够管理hadoop中的数据,同时可以查询hadoop中的数据。

Hive设计的初衷是:对于大量的数据,使得数据汇总,查询和分析更加简单。它提供了SQL,允许用户更加简单地进行查询,汇总和数据分析。同时,Hive的SQL给予了用户多种方式来集成自己的功能,然后做定制化的查询。

我个人的理解 Hive 就是个SQL解析引擎,将 SQL 指令翻译成 MapReduce 的 Job 进行执行,方便了我们对数据的操作。因为他是基于 MapReduce 的所以 Hive不 是为在线事务处理而设计。它最适合用于传统的数据仓库任务。

上面说到 Hive 其实是基于 MapReduce,所以 Hive 可以把SQL中的表、字段转换为HDFS中的文件(夹)以及文件中的列,这个映射的操作就会产生映射数据,也就是元数据,称之为metastore,一般存放在derby、mysql中。

根据上面的描述,我自己认为 Hive 就是对 MapReduce 的高级包装,就像 MyBatis 包装了 JDBC,让我们更容易的使用。

与传统数据库的比较

上面的介绍说 Hive 是数据仓库而不是数据库,但又都使用 SQL,那区别是什么呢?其实区别还挺大的。

查询语言

其实 Hive 根据自身的特性设计了类SQL的查询语言HQL,不完全是你熟知的 SQL。

数据存储位置

Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。

数据更新

之前的教程中介绍了 HDFS,它对数据改写很不友好,所以 Hive 中不建议对数据的改写,所有的数据都是在加载的时候确定好的。如果你有数据需要一直变化,那这个就不适合你。

索引

Hive没有索引,在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些Key建立索引。Hive要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。

总结

综上所述,Hive 是数据仓库,适合非在线实时的数据存取,而且不擅长数据变更,执行效率也不如数据库,只不过是将 SQL 转换成了 MapReduce,但借助 HDFS 可以存储海量的数据。下一篇我们将带你安装 Hive。



商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.renfei.net/posts/1003486
评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。

本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!


本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!