欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive之一统天下

程序员文章站 2022-03-08 09:13:03
...

Hive是什么

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.
1. Hive是一个构建在分布式基础架构Hadoop之上的数据仓库
2. 可方便使用HQL读写和管理大数据
3. 可投射一个schema到一个已存在的数据之上
4. 可通过CLI或者JDBC API连接到HIVE

Hive的优势与不能做什么

Hive的优势
 1. HQL支持类sql的结构化语言查询-->让工程师可以低成本快速分析一些离线数据并得到结果
 2. 统一的元数据管理-->后续会讲到这个metastore会在很多地方被用到
 3. 可扩展-->可以自定义UDF,UDAF,UDTF,可以类别excel中的自定义函数
Hive的不能做什么
 1. Hive不是一个OLAP(On-Line Analytical Processing)系统-->Presto是一个OLAP
 2. Hive不是一个OLTP(On-line Transaction Processing)系统-->不能像关系型数据库那样支持事物处理
 3. Hive表达能力有限-->其实mysql等数据库的表达能力也一样有限,不能支持迭代运算,不易表达复杂运算

 ps:其实sql也是一种编程语言,JAVA这种属于命令式编程语言,
 而sql称之为声明式编程语言,其底层带有一个解释引擎去执行这个程序。
 从这个角度来说,本质都是命令式的编程模型,但从这个封装上来看,
 sql是一个比命令式编程语言的一个升级版本,是一个更高层次的编程语言。
 但sql看上去是比较容易上手和理解,但逻辑表达能力的缺点也很明显。
 个人觉得函数式编程是这两种语言的一个折衷。

Hive架构

图1:
Hive之一统天下
图2:
Hive之一统天下

结合上图,我们的需要知道:
 1. 用户接口:Hive2的入口基本Thrift--->Thrift是一个跨语言的服务框架,通过它code生成引擎迅速构建服务从而达到各个语言之间的无缝连接。
 2. 驱动器(Driver):查询编译器+执行引擎(or计算引擎)
 3. Hive2的存储是在hdfs-->存储格式可以是txt,seq file等行式存储格式
                     -->也可以是parquet,orc等列式存储格式
 4. Hive的计算引擎可以hadoop的mr,也可以是spark
 5. Hive的metastore-->默认存储在自带的derby上,线上使用一般换成rdb的mysql等

Hive的数据模型

Hive之一统天下

基本跟RDB概念差不多,多了一个partition概念,以优化数据的存储和查询

Hive的安装与使用

未完待续

Hive之DDL,DML,Load

未完待续

ps:注意
传统数据库:写时校验模式
Hive:读时校验模式

Hive之可替换的执行引擎

mr
tez
spark

Hive之内部表与外部表

1. 内部表
2. 外部表-hdfs
3. 外部表-hbase
4. 外部表-ES

Hive之UDF,UDAF,UDTF

这里写代码片
相关标签: hive