目前正在做关于数仓的实习,阅读重点与hive相关,偏向开发/底层的内容可能会略过,读书笔记也不会囊括所有内容,而且添上了实习时mentor提点的内容,择需而看。
《Hive编程指南》
第一章 基础知识
数据是了解用户、提高业务在市场上表现、提高基础架构效率的资源。
Hadoop生态系统是为大数据集产生的解决方案,实现了一个计算模型MapReduce,它可以将计算任务分割成多个处理单元,分散到一群家用或服务器级别的硬件机器上。
Hive的存在意义
- 用户从现有的基于传统关系的数据架构转移到Hadoop上时,Hive提供给sql用户利用HQL查询存储在Hadoop集群中的数据。
- Hive将大多数查询转换为MapReduce任务(job),使用户不需要接触到底层的API。
说人话:使用Hadoop底层的API实现算法、查询等工作过于复杂,不友好,高级工具应运而生
Hive的特点
- 适合用于数仓程序,进行静态数据分析,不需要快速响应,且数据本身不频繁变化
- 不支持记录级别的增删改
- 有查询延时(基于面向批处理的Hadoop系统,MapReduce任务的启动过程中需要消耗较长时间,因此在传统数据库中秒级别可以完成的查询,在Hive中即使数据集相对小,往往也要执行更长时间)
- 不支持事务、OLTP,更接近OLAP工具
OLTP和OLAP的区别
参考文章:
操作数据库系统(OLTP)和联机分析处理系统(OLAP)的区别
OLAP与OLTP的优化方案对比
数据仓库:OLTP与OLAP查询
举例:
①在人员管理系统中,删除一个人员,既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等
②银行转账,涉及一个账户上资金减少,另一个账户上资金增加
这些数据库操作语句就构成一个事务,需要有一个机制来避免只删除了部分数据的情况