一.什么是Hive

Hive 是一个建立在 Hadoop 之上的数据仓库工具,其主要的功能就是将海量的数据统一收编,然后再转换成一个普通的表格,让我们可以通过SQL来查看。

举个例子,eg:

在图书馆中有成千上万的书籍,需要寻找什么书籍,通过在前台的电脑上输入自己想要阅读的书籍,然后就会立刻显示此书籍在那一个区域哪一行哪一列。

二.为什么需要分布式数据仓库

这个问题也是很显然意见了,当你有少量文件的时候想要下载使用就无伤大雅,但是当你有个任务是将大量的数据文件整理的时候,你的设备固态内存无法支撑其运行的时候,这时候分布式数据仓库就能发挥它的作用了,只需要通过SQL来操作,而不是一个个下载来整。

什么情况下需要,eg:

1.数据太大一台电脑装不下

2.有多台电脑组成集群分布式存储

3.计算复杂需要分工并行处理

等等等,这些情况出现之后Hive就要登场了,用SQL轻松指挥集群。

三.Hive是如何工作的

Hive 其实就是给大数据文件套了一层像数据库一样的壳。
底层存的是海量日志、文本这类杂乱数据,直接看根本看不懂。Hive 把它们映射成一张张“表”,定义好每一列是什么。
你不用写复杂的大数据代码,只要写类似 MySQL 的 SQL 语句,Hive 就会把 SQL 翻译成底层的计算任务,去分布式集群里批量处理数据。
简单说:它不存真实数据,只存表结构,让你用写 SQL 的方式,轻松查询和统计海量数据,不用懂复杂的分布式计算。

举一个真实的HiveSQL的例子

这个查询在传统数据库里可能跑几分钟,但在Hive + 分布式集群中,即使有几十亿条数据,也能在合理时间内完成!

四.Hive跟传统的MySQL比较

MySQL就像咱们日常用的小账本,数据量小、查得快,适合实时增删改查,比如电商订单、用户信息这种要立刻读写的场景。 Hive更像是巨型档案室,专门存海量历史数据,不适合实时操作,也很少改数据,主要用来统计分析。 简单说:MySQL管实时小数据,反应快;Hive管海量大数据,适合批量算报表。Hive本质不是数据库,只是套了SQL壳的工具,底层靠大数据框架跑,速度远不如MySQL。

MySQL 像跑车,启动快,灵活处理小任务;Hive 像大型公交车/地铁,启动慢一点,但一次能运送成百上千人(处理海量数据)!

五.实战模拟,假如你是数据分析师

比如说,公司有10TB的网站访问日志,存在HDFS上。老板让你统计“每个地区访问量最高的前3个网页”。

公司有10TB的网站日志,要统计“每个地区访问量最高的前3个网页”。 以前得写几千行Java代码,调试一周;

用Hive两步搞定:

1. 先建个“虚拟表”,告诉Hive日志里每一列是什么(时间、IP、地区、网页),它就认识这些存在HDFS里的日志了。

2. 写一句类似MySQL的SQL,先按地区和网页统计访问次数,再给每个地区的网页排个名,直接筛出前3个。

Hive会自动把这句SQL翻译成分布式任务,在集群上并行跑,几分钟就出结果,不用懂复杂的大数据编程。

六.Hive的闪光点跟小缺点

优点

1. 降低门槛:不用写复杂的Java MapReduce代码,只会写普通SQL就能分析海量数据,对数据分析师友好。

2. 处理大数据强:基于Hadoop分布式集群,能轻松处理TB、PB级别的海量日志/数据,横向扩展能力强。

3. 适合统计分析:专门针对离线批量计算,擅长做日志统计、用户行为分析、报表汇总,不支持实时读写。

4. 结构化数据管理:给HDFS上的杂乱数据定义表结构,让非结构化数据变得可查询、可统计。

缺点

1. 延迟高,不实时:都是离线批量处理,从提交任务到出结果要几分钟甚至几小时,没法做实时查询。

2. 不支持增删改:基本不支持实时的插入、更新、删除操作,适合只读的历史数据统计。

3. 学习成本藏坑:虽然SQL简单,但要调优(比如分区、分桶)才能保证运行效率,否则跑海量数据时特别慢。

4. 不支持事务:不适合需要强事务一致性的业务场景,比如银行交易记录。

 Hive不是用来抢MySQL饭碗的,而是用来解决MySQL解决不了的“海量数据离线分析”问题。两者常常配合使用!

七.现实生活中哪里用到Hive

1.字节跳动/抖音  用户行为分析,推荐算法特征加工

2.阿里巴巴  电商大促交易数据离线报表

3.滴滴出行  海量订单轨迹数据分析,高峰预测

4.银行/金融机构  反欺诈离线批处理,历史交易审计

 几乎所有互联网大厂背后都有 Hive 的身影,它是大数据分析必备利器。

更多推荐