目录

Hive——非常牛的一个数仓工具

Hive

Hive基本概念

什么是Hive

hive:由facebook开源的用于解决海量结构化日志的数据统计

hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射到一张表,并提供类SQL的查询功能。

hive本身不存储数据,只是一个工具,提供一个管理的方式

本质是:将HQL(Hive Query Language)转化成MapReduce

hive解决的问题:

  • 海量数据的存储

  • 海量数据的传输

  • 海量数据的计算

    数据的统计,处理等

    https://cdn.cjpa.top/image-20210318105433353.png

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是根据模版来的,模版没有那么完善,没有自己写的能够做到精细化管理

架构原理

https://cdn.cjpa.top/image-20210318111021844.png

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

压缩和存储

企业级调优

Hive实战之谷粒影音

常见错误及解决方案