news 2026/6/26 6:23:07

Hive 数据仓库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hive 数据仓库

一、关系型数据库

1.什么是关系型数据库?

就像Excel 表格一样,数据存在行(记录)列(字段)组成的表里,表与表之间还能 “拉关系”(主键、外键)。

  • 常见选手:MySQL、Oracle、SQL Server …
  • 核心元素:数据库 → 表 → 行/列 → 主键(身份证号)

适合小数据、高一致性

2.关系型数据库的 “瓶颈”

  • 读写太猛:网站每秒上万次请求,硬盘 I/O 扛不住
  • 海量数据查询慢:一张表上亿条,查询像大海捞针
  • 扩展困难:加机器很难,升级要停机,像给飞机换引擎
  • 不需要那么严格:发朋友圈晚几秒看到也无所谓,不用实时

大数据时代,传统数据库力不从心

理解:关系型数据库像学校图书馆的卡片柜,找书快,但书太多了就翻不动。而互联网每天产生海量数据(微博、抖音),需要新工具 —— 这就是Hive出场的原因!

二、Hive —— 大象上的数据仓库

1.Hive 是什么?

Hive是搭建在Hadoop(大象)之上的数据仓库工具。它把SQL 语句翻译成MapReduce 任务在集群上跑。

  • 简单易上手:写 SQL 就能分析大数据,不用学 Java
  • 扩展性强:数据可以存在 HDFS 上,不怕大
  • 容错好:某个节点挂了,任务还能继续
  • 支持自定义函数:可以自己造轮子

2.Hive 怎么工作?

用户接口(命令行/Web)→Hive 引擎(解析 SQL)→ 生成MapReduce 作业→ 在Hadoop 集群执行

Hive SQL ➜ 翻译官 ➜ MapReduce ➜ 结果返回

优势: 上百行 MR 代码,一行 HQL 搞定!
缺点: 不适合低延迟(秒级响应),擅长批处理(日志分析、离线报表)

比喻:Hive 就像一个“翻译官”,你说英语(SQL),它翻译成 Hadoop 能懂的 MapReduce 方言去干活。你只管写查询,不用管底层怎么跑。

三、 Hive 的数据模型 · 四兄弟

1.内部表 & 外部表

  • 内部表:数据存在 Hive 仓库目录,删表时数据和元数据一起删
  • 外部表:数据存在自己指定的 HDFS 路径,删表时只删元数据,数据还在。

创建内部表

CREATE TABLE person (...);

创建外部表

CREATE EXTERNAL TABLE person (...) LOCATION '/hivedb';

2.分区表 & 桶表

  • 分区表:按文件夹划分(如按日期 city=‘北京’),查询时只扫描对应文件夹,快!
  • 桶表:按哈希分成多个文件(如按 age 分 5 个桶),适合抽样、连接加速。

分区表示例

PARTITIONED BY (city STRING)

桶表示例

CLUSTERED BY (age) INTO 5 BUCKETS

记住:分区 = 按文件夹整理(像课本按单元分),桶 = 把数据打散到几个文件(像把同学按学号分到5个小组)。

四、Hive 部署 & 常用命令

1.部署要点

  • 环境:CentOS + Hadoop + MySQL(存元数据)
  • 安装:下载 Hive,配置 hive-site.xml(连 MySQL)
  • 初始化schematool -dbType mysql -initSchema
  • 启动:命令行输入hive就进入啦

元数据存在 MySQL,可以多人同时用

2.基本命令

  • show databases;看所有库
  • use mydb;切换库
  • show tables;看所有表
  • desc formatted table_name;看表结构
  • load data local inpath '/path' into table t;加载本地数据
  • select * from t limit 10;查前10条

实际操作:创建一个内部表 person_inside,加载一个逗号分隔的 txt 文件,然后查询 — 像在教室里用 SQL 玩数据!

五、HWI 网页界面 & HiveServer2

1.HWI (Web 界面)

  • 通过浏览器访问 Hive,不用装客户端
  • 查看表结构、执行查询、查看任务状态
  • 适合不想敲命令的同学

配置后访问 http://ip:9999/hwi

2.HiveServer2

  • 提供JDBC/ODBC接口,让程序(如 Java、Python)连接 Hive
  • 支持多用户并发,比 HiveServer1 强大
  • 自带Web UI(端口 10002),能看到会话、查询日志

Beeline 连接:!connect jdbc:hive2://...

总结: HWI 是 “浏览器版 Hive”,HiveServer2 是 “服务版 Hive”,让其他程序也能调用它。

六、常用查询 & 多表连接

1.连接(JOIN)

  • 内连接:只返回两边都匹配的数据
  • 左外连接:左边全保留,右边没匹配就 NULL
  • 全外连接:左右全部保留
  • 左半连接:相当于 IN 子查询
SELECT * FROM employee JOIN job ON employee.id = job.emp_id;

2.导出 & 排序

  • 导出到本地INSERT OVERWRITE LOCAL DIRECTORY '/tmp' SELECT ...
  • 导出到HDFSINSERT OVERWRITE DIRECTORY '/hivedb' SELECT ...
  • 排序SELECT * FROM t SORT BY age DESC LIMIT 5;取年龄最大的5个
  • 模糊查询SELECT * FROM t WHERE name LIKE '张%';

注意:Hive 的 SQL 和 MySQL 很像,但 Hive 更偏向分析,不支持行级更新、事务,它主打 “一次写入,多次分析”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 6:16:26

零基础也能学AI?博为峰课程全面升级,聚焦AI大模型、车载、鸿蒙

在AI技术重塑各行各业的今天,越来越多零基础人群与转行者希望进入IT领域。然而,如何选择一家课程实用、教学严谨、就业有保障的培训机构,成为普遍关注的核心问题。成立二十余年的IT职业教育品牌——博为峰,正通过“产业反哺教学”…

作者头像 李华
网站建设 2026/6/26 6:15:48

输出、输入函数以及数据类型转换细节

我们使用计算机就离不开输入和输出,在之前的编程中我们也都会先学这些函数,接下来我们就来讲一讲其中一些容易忽略的细节。一、输出函数print(),通常用于将内容打印到屏幕上,其中可以根据需求设置分隔符和结束符,默认的…

作者头像 李华
网站建设 2026/6/26 6:15:50

VADER、TextBlob与Flair三工具协同情感分析实战

1. 为什么单靠一个情感分析工具永远不够:从三套引擎协同作战说起 你有没有遇到过这样的情况:用TextBlob分析一条微博,结果标出“正面情绪”,可你自己读着明明透着一股子讽刺和无奈;或者拿VADER跑一段客服对话&#xff…

作者头像 李华
网站建设 2026/6/26 6:10:12

软标签蒸馏中KL散度和CE的解释

真实分布 P (先以硬标签为例)有一个样本 x(比如一张猫狗图片)它的真实标签是:猫经过独热编码后:猫 [1, 0, 0] 狗 [0, 1, 0] 鸟 [0, 0, 1]预测分布 Q—— 模型(神经网络)输出的 so…

作者头像 李华
网站建设 2026/6/26 6:10:03

巴西开闸,iOS 支付规则进入碎片化时代

如果你做的是 iOS 出海,最近最值得盯的不是某个新 API,而是 App Store 的商业规则正在按国家拆开。截至 2026 年 6 月 21 日,Apple 已在开发者支持页说明:作为与巴西竞争监管机构 CADE 协议的一部分,iOS 26.5 起&#…

作者头像 李华
网站建设 2026/6/26 6:09:18

正定函数视角:C*-单群如何约束冯·诺依曼代数结构

1. 项目概述:当算子代数遇上群论最近在整理一些算子代数与群论交叉领域的老笔记,翻到一个挺有意思的话题,就是如何从“正定函数”这个工具切入,去理解冯诺依曼代数在特定群作用下的结构限制性,以及它与“C*-单群”这个…

作者头像 李华