Hive——非常牛的一个数仓工具
Hive
Hive基本概念
什么是Hive
hive:由facebook开源的用于解决海量结构化日志的数据统计
hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射到一张表,并提供类SQL的查询功能。
hive本身不存储数据,只是一个工具,提供一个管理的方式
本质是:将HQL(Hive Query Language)转化成MapReduce
hive解决的问题:
-
海量数据的存储
-
海量数据的传输
-
海量数据的计算
数据的统计,处理等
Hive的重要概念
-
数据存储在HDFS
-
Hive分析数据底层的默认实现是MapReduce(也可以使用spark)
MapReduce现在用的比较少,spark之后又有flink
-
执行程序运行在yarn上
Hive的优缺点
优点
-
操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
-
避免了去写MapReduce,减少开发人员的学习成本
-
Hive的执行延迟比较高,Hive常用于数据分析,对实时性的要求不高的场合
Hive使用的是MapReduce,处理小文件,需要开好多个进程,会启动很多歌Jvm,会花很多时间,大量的时间都在开关虚拟机,但是小数据本身处理就只需要花很少的时间,因此Hive处理小文件就不是很好了。(ps 这里也有解决办法,可以用jvm重用等手段来解决这种问题)
-
Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
缺点
-
Hive的HQL表达能力有限
-
迭代式算法无法表达
MapReduce迭代式运算,处理完了之后,还要对结果再处理一次,运行太慢了
-
数据挖掘方面不擅长
-
-
Hive的效率比较低
-
Hive自动生成的MapReduce作业,通常情况下哎不够自动化
-
Hive调度比较困难,粒度较细
HQL是根据模版来的,模版没有那么完善,没有自己写的能够做到精细化管理
-
架构原理
Hive安装
Hive数据类型
DDL数据定义
DML数据操作
基于HDFS,数据量很大,通常对于hive的应用场景是一次写入,多次读出
增
删
查
查询
函数
系统内置函数
-
UDF(User-Defined-Function)
一进一出
-
UDAF(User-Defined Aggregation Function)
聚集函数,多进一出
类似于count/max/min
-
UDTF(User-Defined Table-Generating Functions)
一进多出
如lateral view explore()
自定义函数
自定义UDF函数
自定义UDTF函数
自定义一个udtf实现将一个任意分割符的字符串切割成独立的单词,例如:
line:"hello,world,hadoop,hive"
Myudtf(line, ",")
hello
world
hadoop
hive