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 版权协议,转载请附上原文出处链接及本声明。
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。微信订阅号
扫码关注「任霏博客」微信订阅号- 你写得非常清晰明了,让我很容易理解你的观点。
- 感谢分享!拿走了~
- 您是说 UCClient 类接收来自Discuz的UCenter的消息吧,请求是来自 Discuz 的 UCenter吗?code 为 null 说明请求URL地址中没有 code 参数 (?code=xxx) ,确定是 UCenter 发起的请求吗?
- String code = request.getParameter("code"); code一直是null 这是为什么啊
- 你好,我想问一下如果是分析型的数据库要怎么制作docker镜像呢 是修改V008R003C002B0320版本号吗
- 可以的,我也正在开发分享的程序,可以邮件或群联系我都可以,关于页面里有联系方式:https://www.renfei.net/page/about 。
- 有破解软件的需要可以私下联系您吗?
- 您好,手机APP只是个客户端,用于数据呈现展示,数据均保存在服务器上,只留个APP没有任何用处,无能为力哦。
- 老哥 看你弄了这么多软件好厉害啊。 我有个软件 我买过几个小会员 没用几天 然后商家跑路了,软件服务器关闭了,连不上去 用不了。 你能做成一个打补丁版本可以本地用的么? 方便看下么?https://haodezhe.lanzouw.com/iD0f30h9joza 谢谢老哥!
- 您好,由于版权投诉和我国知识产权法的完善,我已经下架所有破解软件的下载链接了。
- 生花妙笔信手来 – 基于 Amazon SageMaker 使用 Grounded-SAM 加速电商广告素材生成 [1]
- github.renfei.net 不再完整代理 Github 页面改为代理指定文件
- 优雅的源代码管理(三):本地优雅的使用 Git Rebase 变基
- 优雅的源代码管理(二):Git 的工作原理
- 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management)
- ChatGPT 开发商 OpenAI 买下极品域名 AI.com
- 火爆的 AI 人工智能 ChatGPT 国内注册教程、使用方式和收费标准
- 解决 SpringCloud 中 bootstrap.yml 不识别 @activatedProperties@ 参数
- Cron表达式书写教程搞定Linux、Spring、Quartz的定时任务
- 阿里云香港可用区C发生史诗级故障