Hive之一统天下

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

这里写代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值