Hive期末总结

hive的概念,谁开发的

Apache Hive 是一个Apache 软件基金会维护的开源项目 Facebook贡献

hive是一个基于hadoop的数据仓库工具(对数据汇总查询和分析的工具)

hive执行原理

Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

hive的优势劣势

优点

操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。

避免了去写MapReduce,减少开发人员的学习成本。

Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。

Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

可延展:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

缺点

1.Hive的HQL表达能力有限

(1)迭代式算法无法表达

(2)数据挖掘方面不擅长

2.Hive的效率比较低

(1)Hive自动生成的MapReduce作业,通常情况下不够智能化

(2)Hive调优比较困难,粒度较粗

hive的元数据和关系型数据库的关系

hive与关系型数据库的关系主要体现在Hive使用关系型数据库来存储其元数据。

Hive的存储

使用HDFS进行存储,使用MapReduce进行计算。

hive的数据存储格式,元数据和真实数据怎么存的(简单了解)

数据存储格式(TEXTFILE\SEQUENCEFILE\RCFILE\ORCFILE)

Hive中的数据通常存储在Hadoop分布式文件系统(HDFS)或其他分布式文件系统中。Hive表可以配置为不同的存储格式,常见的包括:

文本文件:数据以文本形式存储,每行代表一条记录,字段之间通过特定的分隔符分隔。

SequenceFile:Hadoop提供的一种二进制格式,用于存储键值对,适合于存储大量数据。

ORC(Optimized Row Columnar):一种高效的列式存储格式,优化了读写性能,支持复杂的数据类型和压缩。

Parquet:另一种列式存储格式,与Hive和Spark等大数据工具兼容,支持压缩和编码优化。

元数据存储

Hive的元数据包括表结构、分区信息、数据类型、表之间的关系等。这些元数据存储在关系型数据库中,例如:

内嵌式元数据存储:Hive可以使用内嵌式的Derby数据库作为元数据存储,适用于开发和测试环境。

外部关系型数据库:在生产环境中,Hive通常使用外部关系型数据库(如MySQL、PostgreSQL)来存储元数据,以提供更好的性能和可扩展性。

真实数据存储

真实数据即Hive表中的数据,它们存储在Hadoop的HDFS或与其他存储系统兼容的文件中。数据可以分布在集群的多个节点上,以实现高可用性和容错性。Hive表可以是:

内部表:数据存储在Hive的数据仓库目录下,当表被删除时,数据也会被删除。

外部表:数据存储在指定的外部位置,即使表被删除,数据也不会被删除。

Metastore服务

Hive的Metastore服务是一个独立的守护进程,负责存储和管理Hive的元数据。客户端通过Metastore服务与元数据交互,而Metastore服务则与底层的关系型数据库进行通信。这种架构允许多个Hive客户端共享同一个元数据存储,同时提高了元数据的安全性和可管理性。

总结来说,Hive的元数据存储在关系型数据库中,而真实数据存储在分布式文件系统(hdfs)中。Hive提供了多种数据存储格式以适应不同的查询和存储需求,并通过Metastore服务来统一管理和访问元数据。

表是怎么构成的,表里面的分区和分桶(列划分)

表由列构成

hive数据存储结构模型:

python 复制代码
Database
└── Table
    ├── Partition (optional)
    │   ├── Bucket
    │   │   └── File
    │   │
    │   └── Bucket
    │       └── File
    │
    └── Partition (optional)
        ├── Bucket
        │   └── File
        └── Bucket
            └── File

hive数据类型怎么分

基本数据类型:整数、小数、文本、布尔、二进制、时间

复杂数据类型:数组、映射、结构体、联合体

hive的ddl操作

数据库的:

python 复制代码
create database empdb;
show databases;
use empdb;

drop与cate的区别:

drop是删除 cate是清空

建表的分隔符是"|"

怎么加载数据加载到表中

load命令和insert命令

load只直接复制或移动数据 insert执行mapreduce作业插入HIVE表中

元数据存到数据库中的三种模式

单用户模式、多用户模式、远程服务模式

关联查询语句是怎么用的

select * from 要查的表 where 字段名的约束条件

窗口函数是怎么分类的,窗口函数概念(简答?)

分类:排序类、聚合类、分析类、

概念:能够扫描多个输入行计算各输出值,可以为每行数据分别生成一行结果记录。

hive与RDBMS对比表(简答?)

hadoop启动时的五个进程

NameNode、Secondary NameNode、DataNode、ResourceManager 、NodeManager

hiveserver

HiveServer 是 Hive 的一个关键组件,它是一个守护进程(Daemon),用于处理来自客户端的查询请求。

元数据访问:HiveServer 通过 Metastore 服务访问 Hive 的元数据,这些元数据包括表结构、分区信息等。

关联查询

python 复制代码
内连接(INNER JOIN)
假设有两个表:employees 和 departments,它们通过 department_id 字段关联。

SELECT e.employee_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;
这个查询将返回所有员工及其对应的部门名称,只包括那些在 departments 表中也有对应 department_id 的员工。

左外连接(LEFT OUTER JOIN)
如果我们要获取所有员工的列表,即使某些员工没有分配到部门,可以使用左外连接:

SELECT e.employee_name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d ON e.department_id = d.department_id;
这个查询将返回所有员工的列表,如果员工没有分配到部门,department_name 将显示为 NULL。

右外连接(RIGHT OUTER JOIN)
右外连接在Hive中不常用,因为Hive目前不支持原生的右外连接。但是,可以通过左外连接和UNION ALL来模拟右外连接的效果:

SELECT e.employee_name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d ON e.department_id = d.department_id
UNION ALL
SELECT e.employee_name, d.department_name
FROM departments d
LEFT OUTER JOIN employees e ON d.department_id = e.department_id
WHERE e.employee_name IS NULL;
这个查询将返回所有部门的列表,即使某些部门没有员工,员工信息将显示为 NULL。

笛卡尔积(CROSS JOIN)
虽然不是典型的关联查询,但笛卡尔积可以用于生成两个表所有可能的组合:

SELECT e.employee_name, d.department_name
FROM employees e
CROSS JOIN departments d;
这个查询将返回所有员工与所有部门的组合,不考虑任何关联条件。

多表连接
有时,你可能需要根据多个表的多个字段进行连接:

SELECT o.order_id, c.customer_name, e.employee_name
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
INNER JOIN employees e ON o.employee_id = e.employee_id;

联合查询UNION

python 复制代码
假设有两个表:table1 和 table2,它们具有相同的列结构。

SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
这个查询将返回table1和table2中所有不同的行。默认情况下,UNION查询会去除重复的行。

UNION ALL查询
如果需要包含重复的行,可以使用UNION ALL。

SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;

跨多个表的UNION查询
可以跨多个表进行联合查询,只要每个SELECT语句的列数和类型匹配。

SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2
UNION
SELECT column1, column2 FROM table3;

数据etl过程与作用(随便记一点)

ETL过程的作用包括:

数据集成:

将来自不同数据源的数据(如关系型数据库、日志文件、NoSQL数据库等)集成到Hadoop生态系统中。

数据清洗:

清洗原始数据,去除错误、重复或不完整的记录,确保数据的质量和一致性。

数据转换:

将数据转换成适合分析的格式,包括数据类型转换、字段重命名、数据聚合等。

数据聚合:

对数据进行汇总和聚合操作,以支持快速查询和报表生成。

数据验证:

验证数据的完整性和准确性,确保ETL过程没有引入错误。

数据优化:

通过分区、桶(Bucketing)和索引等技术优化数据存储,提高查询性能。

数据加载:

将处理后的数据加载到Hive表中,这些表可以用于后续的分析和报告。

数据血缘:

记录数据的来源和转换过程,帮助理解数据的上下文和历史。

数据治理:

应用数据治理策略,包括数据安全、访问控制和合规性。

数据服务:

为业务用户提供数据服务,支持决策制定和运营活动。

在Hive中执行ETL操作通常涉及以下步骤:

使用HiveQL编写ETL脚本。

使用Hive的LOAD语句将数据从外部源加载到HDFS。

使用Hive的SELECT语句进行数据提取和转换。

使用Hive的INSERT语句将转换后的数据加载到目标表。

使用Hive的分区和桶技术优化数据存储。

使用Hive的元数据管理功能来维护数据血缘和治理信息。

数据库ETL过程中Hive的作用(随便记一点)

数据存储: 作为Hadoop生态系统的一部分,Hive用于存储大规模数据集。

数据提取: 从不同数据源导入数据到Hive。

数据清洗和转换: 使用HiveQL进行数据清洗、转换和标准化。

数据加载: 将处理后的数据加载到Hive表中,支持动态分区等高级特性。

数据优化: 利用分区、桶和索引提高查询效率。

元数据管理: 记录数据的来源和转换过程,支持数据血缘分析。

数据访问: 提供统一的数据访问接口,简化数据访问。

数据治理: 支持数据安全、访问控制和合规性要求。

hive架构组成

维度

数据模型维度:Hive 支持传统的关系型数据库的数据模型,如表(Tables)、分区(Partitions)、桶(Buckets)等。

查询语言维度:Hive 提供了类似于 SQL 的查询语言,称为 HiveQL,用户可以使用它来执行数据查询、数据定义和数据操纵操作。

存储维度:Hive 支持多种数据存储格式,包括文本文件、SequenceFile、ORC、Parquet 等。

计算引擎维度:Hive 可以与不同的计算引擎集成,如 MapReduce、Tez、Spark 等,以执行查询。

组件

Hive CLI:Hive 的命令行界面,允许用户执行 HiveQL 命令。

HiveServer2:Hive 的守护进程,用于处理客户端的查询请求。

Metastore:Hive 的元数据服务,存储关于 Hive 表、分区、数据库等的元数据。

Hive Web Interface (HWI):Hive 的 Web 界面,允许用户通过浏览器执行 HiveQL 查询。

HCatalog:Hive 的表和存储管理服务,允许其他 Hadoop 组件访问 Hive 表。

Hive JDBC/ODBC Driver:允许用户通过 JDBC 或 ODBC 连接 HiveServer2 并执行查询。

架构

数据层:数据存储在 Hadoop 的 HDFS 或其他兼容的分布式文件系统中。

元数据层:Hive 的元数据存储在 Metastore 中,通常是一个关系型数据库,如 MySQL 或 PostgreSQL。

接口层:Hive 提供多种接口,如 Hive CLI、JDBC/ODBC 驱动程序、HWI 等,供用户提交查询。

查询层:HiveServer2 接收查询请求,编译和优化 HiveQL 语句。

执行层:Hive 将查询转换为 MapReduce、Tez 或 Spark 作业,并在 Hadoop 集群上执行。

服务层:包括 Hive 的守护进程和辅助服务,如 Metastore 服务。

集成层:Hive 可以与其他数据处理工具和平台集成,如 Pig、Spark、HBase 等。

安全层:Hive 提供了安全机制,包括访问控制、Kerberos 认证、SSL 加密等。

数据仓库构建过程和步骤

相关推荐
yumgpkpm12 小时前
CMP(类Cloudera CDP 7.3 404版华为Kunpeng)与其他大数据平台对比
大数据·hive·hadoop·elasticsearch·kafka·hbase·cloudera
陈辛chenxin17 小时前
【大数据技术06】大数据技术
大数据·hadoop·分布式·python·信息可视化
yumgpkpm17 小时前
Hadoop在AI时代如何实现生态协同? CMP 7.13(或类 Cloudera CDP7.3 的 CMP 7.13 平台,如华为鲲鹏 ARM 版)
大数据·hadoop·elasticsearch·zookeeper·kafka·hbase·cloudera
piepis1 天前
Doris Docker 完整部署指南
数据仓库·docker·doris·容器部署
qqxhb1 天前
系统架构设计师备考第68天——大数据处理架构
大数据·hadoop·flink·spark·系统架构·lambda·kappa
yumgpkpm2 天前
Hadoop大数据平台在中国AI时代的后续发展趋势研究CMP(类Cloudera CDP 7.3 404版华为鲲鹏Kunpeng)
大数据·hive·hadoop·python·zookeeper·oracle·cloudera
凯子坚持 c2 天前
基于VMware与CentOS 7的Hadoop集群部署全景指南
linux·hadoop·centos
KANGBboy2 天前
ES 总结
hive·elasticsearch
FeelTouch Labs3 天前
数据仓库和数据集市之ODS、CDM、ADS、DWD、DWS
数据仓库
大数据CLUB3 天前
酒店预订数据分析及预测可视化
大数据·hadoop·分布式·数据挖掘·数据分析·spark·mapreduce