问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

码农必知!Hive从入门到实战全攻略

创作时间:
作者:
@小白创作中心

码农必知!Hive从入门到实战全攻略

引用
CSDN
1.
https://m.blog.csdn.net/qq_23519469/article/details/145770027

Hive 是啥?为啥咱程序员要学它?

宝子们,Hive 可是基于 Hadoop 的数据仓库工具 ,简单来说,它能把结构化的数据文件映射成数据库表,还能用类似 SQL 的语句进行查询和分析。有了 Hive,处理大数据就像玩消消乐一样简单!

可能有的小伙伴会问:“我已经会 SQL 了,为啥还要学 Hive?” 这你就有所不知啦!Hive 处理的数据可是存储在 Hadoop 分布式文件系统(HDFS)里,能轻松应对海量数据。而且它把 SQL 语句转成 MapReduce 任务执行,不懂 MapReduce 也能玩转大数据分析。对于咱程序员来说,掌握 Hive 就等于掌握了大数据处理的核心技能,无论是找工作还是做项目,都能轻松拿捏!

通俗易懂讲 Hive 原理

Hive 架构就像一个超厉害的大数据处理工厂 ,各个组件分工明确,默契配合。先来说说用户接口,这可是我们和 Hive 交流的桥梁,常见的有命令行界面(CLI)、HiveServer2(支持多客户端并发和身份认证,比如 Beeline 客户端就是通过它来执行 Hive 查询 ),还有 Web UI(通过浏览器就能管理和监控 Hive 作业)。就好比你要点外卖,CLI 是打电话下单,HiveServer2 是用外卖 APP 下单,Web UI 则是在电脑网页上下单,不管用哪种方式,都能把你的需求传达给 Hive 。

再讲讲 HiveServer2,它可是个关键角色,基于 Thrift 协议提供服务,能让远程客户端用各种编程语言向 Hive 提交请求并获取结果。它的核心是基于 Thrift 的 Hive 服务,堆栈由服务器(Server ,在 TCP 模式下用 TThreadPoolServer,HTTP 模式下用 Jetty Server )、传输层(Transport ,用于客户端和服务器间的数据传输,有 TCP 和 HTTP 模式 )、协议层(Protocol ,负责序列化和反序列化,现在常用 TBinaryProtocol )和处理器(Processor ,处理请求的应用程序逻辑,像 ThriftCLIService.ExecuteStatement () 方法就能编译和执行 Hive 查询 )这 4 层组成。打个比方,HiveServer2 就像一个智能快递站,服务器是快递站的站点,传输层是运输快递的车辆和路线,协议层是给快递打包和拆包的规则,处理器则是快递站工作人员,负责处理每一个快递包裹(请求)。

元数据存储也很重要,它就像是 Hive 的超级大脑,保存着 Hive 表的定义、分区信息和其他元数据,一般用关系型数据库(像 MySQL )来存储。想象一下,元数据存储就像图书馆的索引系统,每本书(数据)的信息都记录在里面,方便我们快速找到想要的内容。

当我们在 Hive 里执行查询时,Hive 会把 HiveQL 语句转换成 MapReduce 任务去执行。比如你写了个简单的查询语句:SELECT name, age FROM students WHERE age > 20; 首先,Hive 会对这个语句进行语法解析,把它变成抽象语法树(AST),就像把一篇文章拆分成一个个语法结构;接着生成逻辑计划,描述查询的基本操作,比如从 students 表中选择 name 和 age 列,并且过滤出 age 大于 20 的记录;然后再把逻辑计划转换为物理计划,具体指定每个操作怎么实现,比如用 MapReduce 作业来完成;在这个过程中,优化器还会对物理计划进行优化,像把过滤条件提前应用(谓词下推),只读取需要的列(列裁剪),只读取包含所需数据的分区(分区裁剪),这样能大大提高查询性能;最后,执行引擎根据优化后的物理计划生成并执行 MapReduce 作业,作业完成后,结果就返回给我们啦。这整个过程就像工厂生产产品,从原材料(HiveQL 语句)到加工(转换为 MapReduce 任务),再到最后的成品(查询结果),每一步都有条不紊 。

Hive 超实用特性大放送

Hive 的特性,那可都是满满的干货 ,每一个都能让你在大数据处理中如鱼得水!

先说说它的查询语言 HiveQL,简直就是 SQL 爱好者的福音 。它和 SQL 语法超级相似,对于咱们熟悉 SQL 的程序员来说,几乎没有学习成本。比如查询一个学生表中成绩大于 90 分的学生信息,SQL 语句是:SELECT * FROM students WHERE score > 90; HiveQL 也是差不多的写法,这种熟悉的语法,让我们能快速上手

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号