工作中,有些时候总感觉对某个概念,某项技术理解的不够深,理解的不到位,其实是自己站的高度不够高。在考虑技术细节和业务结合使用时,也要多想想设计的初衷,多想想为什么,收获颇丰。
一.认识hive
hive一个数据仓库工具,不同于数据库。数据仓库注重于数据分析(OLAP)和历史数据存储,面向主题,而数据库则是面向事务(OLTP),存储
在线交易数据,数据库设计尽量避免冗余,而数据仓库的设计有意引入冗余。
1.面向主题和面向事务
面向主题简单理解是面向某一类信息,面向事务偏重的数据的完整性。如:
商品id,商品名称,商品价格,交易时间,交易数量,交易金额。
在这样的一条交易数据中,面向事务侧重整条交易数据的完整性,而在面向主题的概览中,将信息按主题分类:
商品类:
商品id
商品名称
商品价格
交易类:
交易时间
交易数量
交易金额
2.关于冗余数据
如下的数据库设计是为了避免冗余:
有一个学生班主任表字段如下(班主任和学生的关系是1:N)
学生ID 学生姓名 班主任ID 班主任姓名 班主任家庭住址
那么这里,我们每插入一条学生记录,都必须要插入一次班主任的姓名和家庭住址信息,这就是典型的数据冗余。
这样的冗余带来的麻烦就是:
1。班主任姓名和住址要多次插入同样数据,存在插入错误的危险。
2。班主任搬家了。。。那么要更新班主任家庭住址N次~
为避免冗余:
表拆分为
学生班主任表
学生ID 学生姓名 班主任ID
班主任表
班主任ID 班主任姓名 班主任住址
但是在数据仓库中,设计冗余的目的是以空间换时间,减少关联的开销和提高数据读取的速度。
二.关于hive数据类型的思考
hive数据类型分两大类:一是基本数据类型,二是负载类型。
基本有如tinyint,smallint,int.....(不列举全部),在大部分情况下,设计数据表的时候,都能够正常完成。但是却少有考虑数据类型
对查询性能的影响。比如在定义“员工信息”表时,将员工年龄定义为int类型,并没有任何语法语义错误。但是从查询性能上来考量有瑕疵,这是因为采用int类型存储数据占用的数据表空间比用smallint或tinyint存储占用空间更大,查询时要消耗更多的磁盘IO,在数据集很大的时候,会对查询性能有一定的影响。另外如果hive对某列建立索引,该列的值越短越好,这样可以 提高查询性能,对索引处理会更快。
三.hive三观
树立这些观念有助于更好的利用hive的特点和优势。
1.数据仓库观
hive是数据仓库工具,数据仓库与数据库密不可分,不关注细节。我们可以偏见地像对待数据库一样简单粗暴地对待hive。
在hive里我们可以像操作数据库一样来操作它。
1-1.常见的数据模型操作(SQL):数据库,表,视图,索引,分区,桶
1-2.访问方式:Client(JAVA APT通过thrift server访问),cli(命令行),web ui(直观方便)。
1-3.内置的操作符和函数。
1-4.hive数据文件的存放及元数据信息的管理
2.MapReduce观
2-1.绝大多数hiveQL都是别转换成MR执行的,因此要树立的一种观念是HQL就是MR,在进行Hive调优的时候,很多时候其实都是对MR调优。比如要考虑数据倾斜问题会对MR造成的影响。基于MR的特性,我们可以预见的是hive适合处理大数据量的离线分析,
而且是冷数据(只读不写)。具有高延迟的特点,不适合低延迟快速响应的场合。
2-2.hive的元数据是和很多hadoop组件共享的,比如和impala,Hbase共享元数据。对hive数据的操作同样会影响其他组件的数据。
3.高扩展性观
有些时候,hive自带的函数不能满足实际开发需求,我们可以通过自定义UDF来扩展hive的功能,还可以通过改动一些底层
源码来实现想要的功能。而这些改动都是基于Java,所以改动的成本低,易于编程。类似于ETL工具Sqoop。比如自定义输入输出格式化处理,自定义分隔符处理程序,自定义业务逻辑处理过程等等,这极大的丰富和扩展了hive的功能
相关推荐
"Hive性能调优全方面提升认知" 本篇文章将从四个方面对Hive性能调优进行详细的讲解,分别是Hive建表设计、HiveHQL语句优化、Hive配置参数调整和MapReduce引擎调整。 Hive性能调优的重要性 在大数据领域中,Hive...
Cloudera和Hortonworks的商业版本提供额外功能和服务,如Hadoop、Hbase、Hive等组件的集成和优化。 Hadoop的发展经历了几个主要阶段。Hadoop 1.0由HDFS和MapReduce组成,但存在单点故障和扩展性问题。Hadoop 2.0...
例如,4个学时用于认知大数据和系统环境搭建,4个学时用于Hadoop环境搭建,4个学时用于Hive环境搭建与基本操作,以此类推,确保学生能够逐步深入学习并掌握每个工具的使用。 总的来说,这门课程是为培养具备Hadoop...
无论是初学者还是有一定经验的从业者都能从中受益,提升对大数据生态系统的整体认知和技术能力。 其他说明:本文档全面而细致地讲解了大数据处理的各种技术和工具,不仅包括基础知识,还有大量的实际案例和实践经验...
1. **大数据认知**:大数据是新时代企业的重要资产,它涵盖了海量、高速、多样化的信息资源,通过大数据分析可以为企业决策提供有力支持。 2. **Linux基础**:作为大数据平台的常用操作系统,Linux的基础知识是必备...
1. **Hadoop基础架构理解**:书中详细介绍了Hadoop的工作原理及其各个组件的作用,帮助读者建立对Hadoop整体架构的认知。 2. **HDFS深入了解**:HDFS是Hadoop的核心之一,书中不仅讲解了HDFS的基本操作,还深入探讨...
1. **Hadoop分布式文件系统(HDFS)**:理解HDFS的架构,包括NameNode、DataNode、Block、Replication等核心概念。 2. **MapReduce编程模型**:学习如何编写Map和Reduce任务,理解shuffle和sort过程,以及优化...
本文将概述大数据开发的基本流程,包括数据采集、数据缓存重用、离线计算(批处理)以及数据服务,帮助初学者建立起对大数据处理的初步认知。 一、数据采集 数据采集是大数据处理的第一步,它涉及从各种源头收集...
这个资源包对于想要深入了解大数据和Hadoop的人来说,是一份宝贵的资料,不仅可以帮助初学者建立起对大数据的基本认知,也能为有经验的开发者提供进一步学习和实践的指导。通过系统学习和应用这些知识,可以提升数据...
1. 建立对大数据知识体系的整体认知,包括大数据的历史、基本概念、影响、应用领域、关键技术、计算模式和产业发展。同时,学生还将了解云计算与大数据的密切关系。 2. 学习分布式大数据处理架构Hadoop的基本原理,...
学习内容涵盖了云计算的基本理论、主流应用、虚拟化技术的认知、分布式计算的理解、集群服务器的掌握,以及虚拟化技术、KVM、Xen、VMware的部署与使用,CloudStack云计算平台的搭建,Hadoop系统、HDFS/MapReduce编程...
此外,还探讨了大数据与云计算、物联网之间的相互关系,帮助学生建立整体认知。 接下来,课程深入讲解大数据处理的关键技术,如数据处理流程、关键技术、处理工具以及面临的挑战。同时,也介绍了云计算与关系型...
在大数据团队中,由于技术复杂性和信息的分散,员工与管理者之间可能存在认知差异。当信息共享充分时,所有成员都能了解全局问题,提高对问题的敏感度,如租户性能问题等,从而减少误解和冲突,提升决策效率。 其次...
3. 增强学生自我认知:通过系统,学生可以了解到自己专业毕业生的就业趋势,帮助他们更好地规划未来。 五、结论 大数据技术在高校就业信息管理中的应用正逐渐深入,构建一个高效的就业信息评测系统,能够帮助高校更...
1. **大数据定义与特点**:了解大数据的四V特性——Volume(大量)、Velocity(快速)、Variety(多样)和Value(价值),以及如何在这些特性下处理和分析数据。 2. **大数据架构**:包括Hadoop生态系统,如HDFS...
此外,还教授编程语言如Java、Scala,大数据处理框架如Hadoop、Spark、Hive等,以及实时数据处理工具如Storm、Kafka等。 通过这样的实训项目,齐鲁工业大学旨在为工业领域输送具备大数据处理和分析能力的专业人才,...