- 学习:知识的初次邂逅
- 复习:知识的温故知新
目录
一,数据仓库的概念
1. 纸和笔时代
- 最早的数据处理阶段,人们使用纸和笔来记录、计算和分析数据。
- 这种方法虽然直观且容易理解,但随着数据量的增加,其效率和处理能力都受到了极大的限制。
2. Excel表格时代
- 随着电子计算机的普及,电子表格软件如Excel开始成为数据处理的主要工具。
- Excel提供了强大的表格处理、数据计算、图表生成等功能,极大地提高了数据处理的效率和准确性。
- 然而,当数据量增长到一定程度时,Excel的局限性也逐渐显现,如性能瓶颈、数据一致性难以保证、并发访问受限等问题。
3. 数据库时代
- 为了应对Excel等电子表格软件在数据处理上的局限性,数据库技术应运而生。
- 数据库系统通过提供结构化的数据存储方式、强大的数据查询和更新能力、事务处理机制以及并发控制等功能,极大地提高了数据处理的效率和可靠性。
- 数据库系统支持大规模数据的存储和管理,并能够通过SQL等查询语言实现复杂的数据分析和报表生成。
- 然而,随着数据量的进一步增加和数据复杂性的提高,传统的数据库系统也逐渐显露出其局限性,如处理大规模数据分析时的性能瓶颈、数据仓库建设成本高等问题。
4. 数据仓库时代
- 当数据量增长到一定程度时,数据仓库应运而生。
- 数据仓库是一种面向主题的、集成的、相对稳定的、反映历史变化的数据集合,它用于支持管理决策。
- 数据仓库通过从各个数据源抽取、转换和加载(ETL)数据,将数据整合到一个统一的结构中,以便于后续的数据分析和决策支持。
- 数据仓库提供了比传统数据库系统更强大的数据处理和分析能力,支持复杂的数据查询、数据挖掘和报表生成等操作。
- 同时,数据仓库还提供了数据清洗、数据转换和数据整合等功能,确保数据的一致性和准确性。
从最初的纸和笔到Excel表格、数据库系统再到数据仓库,每个阶段都有其独特的优势和局限性。随着大数据时代的到来和数据处理技术的不断发展,期待未来会有更加高效、智能和便捷的数据处理解决方案出现。
二,数据仓库和数据库的区别
1,数据存储不同
- 数据仓库存储的经过清洗,转换,和整合的数据,通常来自多个数据源,以支持分析,报表;
- 数据库这存储着企业日常的数据,用于支持业务系统的运作;
2,数据结构不同
- 数据仓库的数据结构通常包括维度与事实,并且以模型的方式组织,便于查询和分析;
- 数据库的数据结构更加多样化,根据业务需求,包括表,视图,存储过程等;
3,数据使用不同
- 数据仓库的数据通常用于分析,报表和决策支持,访问频率较低,主要访问的是历史数据;
- 数据库的数据则用于业务系统的运行,访问频率高,包括事务处理,查询和数据分析等;
总结:
数据仓库为分析数据而生;他可以处理超大规模批量级别的数据
数据库为事务而生,当然数据库也可以做数据分析,但是他无法处理大批量级别的数据
三,数据仓库的分成架构
数据仓库的分层架构是一种组织和管理数据的方法,它将数据仓库划分为不同的层级,每个层级有不同的功能和目的。一般而言,数据仓库的分层架构可以包括以下几个层次:
1,数据源层
- 数据源层是数据仓库的最底层,包含了各种数据源,如关系型数据库、文件系统、日志文件等。
- 数据源层负责从这些数据源中提取数据,并将其转换为数据仓库可以处理的格式。
2,ETL(提取、转换、加载)层
- ETL层负责将数据从数据源层抽取出来,并进行清洗、转换和加载到数据仓库中。
- 在这个层级中,数据经过清洗和转换,以确保数据的一致性和准确性。
3,数据存储层
- 数据存储层是数据仓库的核心部分,用于存储已经经过ETL处理的数据。
- 数据存储层通常采用多维数据模型,如星型模型或雪花模型,以支持灵活的数据查询和分析。
4,数据访问层
- 数据访问层提供了对数据存储层的访问接口,使用户可以通过查询和分析工具来访问和分析数据。
- 这个层级通常包括OLAP(联机分析处理)服务器、报表工具和数据挖掘工具。
5,数据展示层
- 数据展示层是数据仓库的最上层,用于向最终用户呈现数据。
- 这个层级通常包括报表、仪表盘、数据可视化工具等,以帮助用户理解和分析数据。
分层架构的设计使得数据仓库可以根据不同用户的需求和角色进行定制,提供灵活的数据访问和分析能力。同时,它也有助于优化数据处理的性能,确保数据的一致性和准确性,并支持数据仓库的扩展。
四,Hive的读写机制
Hive的读写机制主要涉及到数据的导入和导出,以及数据在Hadoop分布式文件系统(HDFS)中的存储和管理。具体如下:
1,数据导入
- Hive可以从多种数据源导入数据,包括本地文件系统、HDFS、HBase、Amazon S3等。
- 使用HiveQL的LOAD DATA命令可以将数据加载到Hive表中,支持从本地文件系统或HDFS中加载数据,也可以加载到指定的分区中。
- Hive还支持外部表(External Table),其数据存储在指定的位置(如HDFS或其他文件系统),对外部表进行数据导入不会改变数据的存储位置。
2,数据存储
- Hive使用表来组织和管理数据,每个表对应一个目录,该目录下包含数据文件、元数据文件等。
- 表的数据存储在HDFS中,可以选择不同的存储格式,如文本文件、序列文件、Parquet等。
- 如果表使用了分区,数据文件会按照分区的方式存储在对应的子目录中。
3,数据导出
- 使用HiveQL的INSERT INTO命令可以将查询结果导出到本地文件系统或HDFS中。
- Hive还支持将查询结果导出到其他数据源,如关系型数据库、HBase等。
Hive通过将数据存储在HDFS中,并通过表来组织和管理数据,实现了对大规模数据的高效读写和查询。同时,Hive还提供了丰富的数据导入导出功能,支持多种文件格式和数据源,满足了不同场景下的数据处理需求。
五,Hive的数据类型
1,原始数据类型
Hive中的基本数据类型(也称为原始类型)包括整数、小数、文本、布尔、二进制以及时间类型,具体如下:
- 整数:TINYINT、SMALLINT、INT、BIGINT
- 小数:FLOAT、DOUBLE、DECIMAL
- 文本:STRING、CHAR、VARCHAR
- 布尔:BOOLEAN
- 二进制:BINARY
- 时间:DATE、TIMESTAMP、INTERVAL
最常用的
- int 整数类型
- string 字符串类型
- date 时间类型
2,复杂数据类型
Hive还支持复杂数据类型,包括数组(ARRAY)、映射(MAP)、结构体(STRUCT)和联合体(UNIONTYPE),这些类型允许在表中存储更复杂的数据结构。
- 数组(ARRAY):具有相同类型变量的集合。
- 映射(MAP):一组键值对集合,key只能是基本类型,值可以是任意类型。
- 结构体(STRUCT):封装了一组有名字的字段,其类型可以是任意的基本类型或复杂类型。
- 联合体(UNIONTYPE):在任一时刻可以保存指定数据类型中的任意一种,类似于Java中的泛型。
Hive的复杂数据类型提供了灵活的数据表示能力,支持在表中存储更复杂的数据结构。这些数据类型在数据分析和处理中非常有用,可以帮助用户更好地理解和分析数据。
HiveQL对大小写不敏感,且所有类型均为保留字。Hive的数据类型与Java中的数据类型有对应关系,例如STRING类型实现的是Java中的String,FLOAT类型实现的是Java中的float等。这些类型提供了灵活的数据表示能力,满足不同的数据处理需求。
- 学习:知识的初次邂逅
- 复习:知识的温故知新