大数据开发必备技能_第三阶段04_hive_1

如果你对大数据开发充满好奇,但苦于零基础不知从何入手,这系列文章就是为你量身定制的!

零门槛入门:无需编程经验,从最基础的SQL查询讲起,手把手带你理解数据操作的核心逻辑。

实战为王:每章附赠真实场景练习题,边学边练,拒绝纸上谈兵。

转行利器:内容直击企业高频需求(数据清洗、分析、可视化),搭配职场避坑指南,助你快速构建“可迁移技能”。

系统进阶:从数据类型到复杂查询,从运算符到执行顺序,层层递进,帮你搭建扎实的大数据地基。

无论你是学生、职场新人,还是想跨界转行的探索者,跟着这份指南,用一杯伯牙绝弦的时间,迈出大数据开发的第一步!

🎉 致亲爱的读者朋友们:
📢 放心追更!本系列文章每日三篇干货更新,助你稳扎稳打!
🎥 配套视频解说正在全力打磨中,即将震撼上线——
🔥 关注收藏不迷路,精彩内容绝不辜负!

目录

  1. Hive概述

  2. 基础语法与操作

  3. 高级查询与函数

  4. 数据存储与管理

  5. Hive与HDFS交互

  6. 数据更新与删除策略

  7. 实战练习

  8. 面试题精选

  9. 总结


1. Hive概述

定义与特点

  • Hive:基于Hadoop的数据仓库工具,支持类SQL(HQL)查询,将查询转换为MapReduce任务执行。

  • 适用场景:处理大规模数据(TB/PB级),适用于离线分析。

  • 核心特性

    • 数据存储在HDFS,元数据(表结构)默认存储在MySQL等关系型数据库。

    • 高延迟,低交互性(对比传统RDBMS如Oracle)。

与Oracle对比

特性HiveOracle
数据量海量数据(TB/PB)中小规模(GB/TB)
执行引擎MapReduce(高延迟)自带执行引擎(高效)
更新/删除不支持直接操作,需覆盖写入支持直接操作

2. 基础语法与操作

启动与基本命令

bash

# 启动Hive CLI  
hive  

# 查看数据库  
SHOW DATABASES;  

# 切换数据库  
USE s1127;  

# 查看表  
SHOW TABLES;  
 

建表示例

sql

CREATE TABLE emp (  
  empno INT,  
  ename STRING,  
  job STRING,  
  mgr INT,  
  hiredate STRING,  
  sal INT,  
  comm INT,  
  deptno INT  
)  
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';  
 

数据加载

sql

-- 从本地文件加载数据到Hive表  
LOAD DATA LOCAL INPATH '/home/1' INTO TABLE emp;  
 

3. 高级查询与函数

窗口函数示例

sql

-- 查询部门薪资前三名员工  
SELECT * FROM (  
  SELECT ename, deptno, sal,  
    ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) AS rn  
  FROM emp  
) t WHERE rn <= 3;  
 

条件表达式

sql

-- CASE语句  
SELECT empno, deptno, sal,  
  CASE WHEN sal > 2000 THEN 'high_sal' ELSE 'low_sal' END AS lev  
FROM emp;  

-- IF函数  
SELECT empno, IF(sal > 2000, 'high_sal', 'low_sal') AS lev FROM emp;  
 

4. 数据存储与管理

存储格式对比

格式类型特点
TextFile行式存储默认格式,易读但低效
ORC列式存储高压缩比,查询高效

建表指定存储格式

sql

CREATE TABLE t_orc (id INT)  
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  
STORED AS ORC;  
 

5. Hive与HDFS交互

文件操作命令

bash

# 在HDFS创建目录  
hadoop fs -mkdir -p /student  

# 上传本地文件到HDFS  
hadoop fs -put /home/1 /student/  

# 从HDFS下载文件到本地  
hadoop fs -get /student/1 /home/111  
 

6. 数据更新与删除策略

覆盖写入实现更新

sql

-- 部门20员工涨薪10000  
INSERT OVERWRITE TABLE emp  
SELECT empno, ename, job, mgr, hiredate,  
  CASE WHEN deptno=20 THEN sal+10000 ELSE sal END AS sal,  
  comm, deptno  
FROM emp;  

-- 删除部门10数据  
INSERT OVERWRITE TABLE emp  
SELECT * FROM emp WHERE deptno <> 10;  
 

7. 实战练习

题目

  1. 数据加载:将本地文件/home/emp_data加载到Hive表emp中。

  2. 复杂查询:统计每个部门平均薪资,并按降序排列。

  3. 存储优化:创建ORC格式表emp_orc,并将emp表数据导入。

操作示例

sql

-- 创建ORC表并导入数据  
CREATE TABLE emp_orc LIKE emp  
STORED AS ORC;  
INSERT INTO emp_orc SELECT * FROM emp;  
 

8. 面试题精选

  1. Hive与RDBMS的主要区别?

    • Hive适用于批处理,高延迟;RDBMS支持事务、低延迟。

  2. Hive的元数据存储在哪里?

    • 默认存储在MySQL等关系型数据库。

  3. 如何优化Hive查询性能?

    • 使用列式存储(ORC)、分区表、避免全表扫描。

  4. Hive支持直接更新数据吗?如何实现?

    • 不支持,需通过INSERT OVERWRITE覆盖写入。


9. 总结

Hive作为Hadoop生态的核心工具,通过类SQL语法简化了大数据分析流程。其核心优势在于处理海量数据,但需注意性能优化(如选择列式存储)。掌握HQL语法、数据加载策略及覆盖写入技巧是实际应用的关键。建议结合Spark等计算引擎提升处理效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据小塔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值