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 版权协议,转载请附上原文出处链接及本声明。
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。微信订阅号
扫码关注「任霏博客」微信订阅号- 大佬 引入jar包那里的 driver class 怎么选的?
- 我也遇到了这个问题,已经解决了,在此分享一下 1、宿主机也要创建kingbase的用户和用户组,并且要查看一下用户和用户组的ID(这个很重要) 2、把data目录的用户和用户组设置为kingbase 3、先不要把data路径挂载到宿主机上,这时就可以正常启动,启动后进入容器,查看一下容器内的kingbase的用户和用户组ID是多少,和第一步的ID是否一致,如果ID一致,那正常挂载目录就行;如果ID不一致,那就需要修改Dockerfile文件,在构建镜像时,修改容器内的用户和用户组ID,必须和宿主机的保持一致。然后重新构建镜像,就可以正常挂载宿主机目录了 4、其实直接修改宿主机的用户和用户组ID也是可以的,但是容器内的ID一般是1000,但是宿主机的这个ID很可能已经被占用了,无法修改,就只能修改容器内的ID
- 接口已经允许跨域请求,也就是说你可以在你的页面上调用,获取用户的公网 IP。 如果你还需要其他需求,可以提交 Issue 给我。
- V008R003C002B0320 这个对应的jdbc链接驱动你在哪里找到的?我也遇到了这个问题。
- WARNING: max_connections should be less than orequal than 10 (restricted by license) HINT: the value of max_connect is set 10 WARNING: max_connections should be less than orequal than 10 (restricted by license) HINT: the value of max_connect is set 10 kingbase: superuser_reserved_connections must be less than max_connections 我按照文档修改了以后,不知道如何重启。
- 然后把数字都改成 1 再启动。 如何重新启动?
- ksql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.KINGBASE.54321"
- 进入容器查看一下日志,是不是启动失败了,日志文件在:/opt/kingbase/logfile
- ksql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.KINGBASE.54321"?
- 先通过 docker exec -it 容器名/id /bin/bash 进入容器,然后在容器中使用 ksql 客户端进行连接数据库:/opt/kingbase/Server/bin/ksql -U system test
- 免费.ml域名10年委托合同到期被马里共和国收回域名经营权
- 从极狐Gitlab看各种中间件技术选型
- 时隔十年首次收到 Google AdSense 的付款
- ga域名被加蓬共和国从Freenom公司手中收回域名经营权
- Freenom 被 Meta(Facebook) 起诉导致暂停 .tk/.ga/.ml/.cf/.gq 等新域名注册
- 生花妙笔信手来 – 基于 Amazon SageMaker 使用 Grounded-SAM 加速电商广告素材生成 [1]
- github.renfei.net 不再完整代理 Github 页面改为代理指定文件
- 优雅的源代码管理(三):本地优雅的使用 Git Rebase 变基
- 优雅的源代码管理(二):Git 的工作原理
- 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management)