文章目录
前言
提示:部分内容总结自https://www.bilibili.com/video/BV1CU4y1N7Sh?p=27&spm_id_from=pageDriver,仅供学习
数据仓库介绍
数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。
数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。
数仓专注分析
- 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;
- 同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用;
- 这也是为什么叫“仓库”,而不叫“工厂”的原因。
简介
- Hive 由 Facebook 实现并开源,是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询功能,底层数据是存储在 HDFS 上。
- Hive 本质: 将 SQL 语句转换为 MapReduce 任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,是一款基于 HDFS 的 MapReduce 计算框架
- 主要用途:用来做离线数据分析,比直接用 MapReduce 开发效率更高。
为什么使用 Hive
-
直接使用 Hadoop MapReduce 处理数据所面临的问题:
- 人员学习成本太高
- MapReduce 实现复杂查询逻辑开发难度太大
-
使用 Hive
- 操作接口采用类 SQL 语法,提供快速开发的能力
- 避免了去写 MapReduce,减少开发人员的学习成本
- 功能扩展很方便
一、Hive 架构
Hive 架构图
Hive 与 Hadoop 的关系
Hive 利用 HDFS 存储数据,利用 MapReduce 查询分析数据。
Hive是数据仓库工具,没有集群的概念,如果想提交Hive作业只需要在hadoop集群 Master节点上装Hive就可以了
Hive 与传统数据库对比
- hive 用于海量数据的离线数据分析。
二、Hive SQL
数据类型
分隔符
目的:结构化文件映射成表
CREATE TABLE student(classNo string, stuNo string, score int) row format delimited fields terminated by ',';
- row format delimited fields terminated by ‘,’ 指定了字段的分隔符为逗号,所以load数据的时候,load的文本也要为逗号,否则加载后为NULL。hive只支持单个字符的分隔符,hive默认的分隔符是\001
DML语句
load
Load语法功能
- Load英文单词的含义为:加载、装载;
- 所谓加载是指:将数据文件移动到与Hive表对应的位置,移动时是纯复制、移动操作。
- 纯复制、移动指在数据load加载到表中时,Hive不会对表中的数据内容进行任何转换,任何操作
Load语法规则
- LOAD DATA [LOCAL] INPATH ‘filepath’ [OVERWRITE] INTO TABLE tablename;
insert
Insert语法功能
- Hive官方推荐加载数据的方式:清洗数据成为结构化文件,再使用Load语法加载数据到表中。这样的效率更高。
- 也可以使用insert语法把数据插入到指定的表中,最常用的配合是把查询返回的结果插入到另一张表中。
Select 语法树
聚合操作
Group by
Having
Order by
limit
三、 Hive join
四、Hive 常用函数入门
Hive 常用的内置函数
- 内置函数(build-in)指的是Hive开发实现好,直接可以使用的函数,也叫做内建函数。
- 官方文档地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
- 内置函数根据应用归类整体可以分为8大种类型,我们将对其中重要的,使用频率高的函数使用进行详细讲解。