一、关系型数据库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 网页界面 HiveServer21.HWI (Web 界面)通过浏览器访问 Hive不用装客户端查看表结构、执行查询、查看任务状态适合不想敲命令的同学配置后访问 http://ip:9999/hwi2.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 更偏向分析不支持行级更新、事务它主打 “一次写入多次分析”。