第一章初识hive

数据挖掘->算法编写

数据分析->hive(pig、hbase):降低数据分析的难度
框架:对基础架构进行补充(扩充)
一.hive框架:
1,由Facebook开源用于解决海量结构化日志的数据分析。
结构化日志,顾名思义不再是自由格式的日志,而是遵循了一定的结构:每一行日志就是一个JSON结构。
2.hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件(txt,seq,rc)映射为一张表,并提供类sql的查询功能。
本质:hql(hive query language)sql->mapreduce
hiveQL语句转化成MR程序

数据仓库(架构、大量数据)不是数据库(软件)
1)Hive处理的数据存储在HDFS
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在Yarn上
hadoop:
1.common :底层支撑组件,公共模块
2.hdfs :大数据分布式存储
3.map reduce :大数据的分布式计算(数据分析)
1.输入
2.映射(map)
3.分发(shuffle)
4.化简(reduce)
5.输出

排序:hive:order by(HQL)
      mr:编写很多文件

4.yarn :提供资源调配功能
总结:
1)Hive处理的数据存储在HDFS
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在Yarn上
二.hive优缺点
优点:
1.操作接口采用类sql语法,提供快速分析数据的能力
2.避免编写mapreduce,减少开发成本
3.hive执行延迟高(由于底层数据分析是由mapreduce实现),适用于静态数据的分析,对于实时数据分析无法实现
4.hive针对于大数据,对小数据支持不佳。
5.hive提供用户自定义函数的功能。
缺点:
1.hive的HQL表达能力有限,无法表达迭代式开发的需求
2.hive只针对静态数据的分析,不擅长实时数据分析以及数据挖掘
3.hive的执行效率比较低,由于将hql转化为mr,不够智能化。
4.hive的优化是比较麻烦的(hive-site.xml)。

三.hive结构

在这里插入图片描述

元信息:
由于hive只是解决数据分析问题,不提供数据存储功能,所以将大数据文件转为hive表之后,hive表文件各种属性的信息称为元信息,这些元信息是需要存储在另一个数据库中(关系型:默认derby,推荐mysql)。
Meta Store并不存储真实的数据,只是存储数据库的元数据信息,主要包括存储hive中有哪些数据库,哪些表,表的模式,目录,分区,索引以及命名空间,真实数据是存储在HDFS上的。

hive组件(hive-site.xml):将hql->mr程序
1.HQL解析器
将hql字符串转化为抽象的语法树AST,工具:antlr,对AST进行分析
例如:分析表是否存在、Hql语法、字段是否存在
2.HQL编译器
将生成的语法树,生成逻辑的执行计划。
3.HIVE优化器
将逻辑执行计划进行优化
4.执行器
执行计划(逻辑执行->物理执行计划)

四.hive对比hadoop以及mysql
hadoop:
1.hadoop解决数据存储和数据计算,hive只有数据计算
2.在执行数据分析的过程,hive使用HQL,hadoop是mapreduce
3.HQL本质也是mapreduce
mysql:
1.mysql支持数据更新操作,hive理论上不支持数据更新操作。
2.hive数据存放在hdfs,元信息存储在元数据库中。mysql数据放在宿主机上。
3.Hive在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些Key建立索引。Hive要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduce 的引入, Hive 可以并行访问数据,因此即使没有索引,对于大数据量的访问,Hive 仍然可以体现出优势。数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询。
4.执行延迟:mysql执行延迟低(小数据情况下),
hive执行延迟高(小数量大数据量情况下)
5.可拓展性:由于UDF(用户自定义函数)的存在,
hive扩展性强
mysql较差
6.hive数据规模大
五.hive与关系数据库对比
在这里插入图片描述
相似之处只有HQL和SQL语法

举例:统计
数据采集
“NBA” “2020-3-1 10:0:0” “IP” “host”
"CBA “2020-3-1 10:0:0” “IP” “host”
“CBA” “2020-3-1 10:0:0” “IP” “host”
数据清洗
“NBA”
“CBA”
“CBA”
数据格式化
NBA
CBA
CBA
数据分析
NBA 1
CBA 2
举例;查询在某时间段内出现次数最多的关键字
hive过程:
1.hive:表创建

 temp          sj
"NBA"  "2020-3-1 10:0:0" 
"CBA " "2020-3-1 10:0:0" 
"CBA"  "2020-3-1 10:0:0" 

2.编写hql分析

select temp ,count(*) as cs from(
select temp from tb1 where sj>****** and sj<********)
group by temp order by cs desc 
limit 0,1;

猜你喜欢

转载自blog.csdn.net/weixin_44703894/article/details/114477034