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:
图2:
结合上图,我们的需要知道:
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的数据模型
基本跟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
这里写代码片