首页 > 其他分享 >Hive数仓操作(一)

Hive数仓操作(一)

时间:2024-09-29 20:20:22浏览次数:10  
标签:数仓 存储 数据库 MapReduce Hive 索引 操作 数据

Hive 介绍

Hive 是一个基于 Hadoop 的数据仓库工具,旨在简化大规模数据集的管理和分析。它将结构化数据文件映射为表,并提供类似 SQL 的查询功能。Hive 的数据存储在 Hadoop 分布式文件系统(HDFS)中,使用 Hive 查询语言(HQL)进行数据处理。

1. Hive 的本质: HQL转化为MapReduce

  1. 数据存储:Hive 的数据存储在 HDFS 中。
  2. 底层实现:Hive 通过 MapReduce 框架处理数据,适合大数据量的分析任务。
  3. 执行延迟:Hive 的执行延迟较高,适合于对实时性要求不高的数据分析场景。

在这里插入图片描述


2. Hive 的优点

  1. 简单易用:采用类 SQL 语法,快速开发能力强。
  2. 低学习成本:避免手动编写 MapReduce 程序,减少开发人员的学习成本。
  3. 大数据处理:优势在于处理大规模数据,对于小数据量没有明显优势。
  4. 自定义扩展:支持用户自定义函数,能够满足特定需求。

3. Hive 和关系型数据库的比较

尽管 Hive 采用了类似 SQL 的查询语言 HQL,使得它在表面上看起来像一个数据库,但实际上,Hive 和数据库除了拥有类似的查询语言,再无类似之处,数据库可以用在 Online 的应用中,但是Hive 是为数据仓库而设计的工具。

特性Hive关系型数据库(如 Oracle,Mysql)
存储HDFS 分布式文件存储系统服务器本地的文件系统(如 DBF)
计算MapReduce专用的计算执行引擎
时间高延迟低延迟
数据量适用于 PB/TB 级别的大数据通常处理 GB 级别的数据
主键不支持主键支持主键
索引高版本才有位图索引,索引支持有限有丰富的索引支持
可扩展性与 Hadoop 的可扩展性一致,支持大规模集群由于 ACID 语义的限制,扩展性有限
数据规模支持大规模数据的并行计算支持的数据规模相对较小
  1. 查询语言:Hive 提供了针对其特性设计的类 SQL 查询语言 HQL,熟悉 SQL 的开发者可以快速上手。

  2. 数据存储位置:Hive 的数据都存储在 HDFS 中,而关系型数据库则可以保存在本地文件系统或块设备中。

  3. 数据更新:Hive 主要用于读多写少的场景,不建议频繁更新数据,而关系型数据库的设计则支持频繁的 CRUD 操作。

  4. 索引:Hive 在数据加载过程中不会自动创建索引,因此查询时可能需要全表扫描,这会导致较高的延迟。相对而言,关系型数据库通常会为重要字段创建索引,查询效率较高。

  5. 执行:Hive 查询通过 Hadoop 的 MapReduce 来实现,而关系型数据库则通常有自己的执行引擎,处理速度更快。

  6. 执行延迟:由于缺乏索引和使用 MapReduce,Hive 的查询延迟较高,因此不适合在线实时查询。

  7. 可扩展性:Hive 的可扩展性与 Hadoop 一致,能够在集群上水平扩展,支持大规模数据的处理。而传统关系型数据库在 ACID 语义的严格限制下,扩展性相对有限。

  8. 数据规模:Hive 利用 MapReduce 进行并行计算,能够支持 PB/TB 级别的数据规模。相比之下,关系型数据库的处理能力通常较小,适合 GB 级别的数据。

  9. 应用场景:Hive 是为数据仓库设计的,适用于数据分析和批处理,而关系型数据库更适合在线事务处理(OLTP)和实时数据查询。


4. Hive 的元数据存储

元数据是描述数据的数据,Hive 需要有一个地方来存储元数据,它包括以下内容:

  • 数据库的名称
  • 表的名称
  • 表的列名
  • 表的类型
  • 列的类型
  • 表的数据在 HDFS 上的位置

为了管理这些元数据,Hive 一般使用 关系型数据库如MySQL 作为存储后端。

相关操作

1. 登录 MySQL 数据库

在命令行中使用以下命令登录到 MySQL:

mysql -h 127.0.0.1 -u root -p123456

这里,-h 指定主机地址,-u 指定用户名,-p 后跟密码。

2. 查看 MySQL 中的数据库

登录后,可以显示 MySQL 中现有的数据库:

SHOW DATABASES;

会看到多个数据库,其中有一个名为 hive 的数据库,用来存储 Hive 的元数据。

3. 切换到 Hive 数据库

使用以下命令切换到 hive 数据库:

USE hive;

标签:数仓,存储,数据库,MapReduce,Hive,索引,操作,数据
From: https://blog.csdn.net/m0_58076578/article/details/142622703

相关文章

  • Hive数仓操作(二)
    Hive数据类型与连接Hive是一个用于处理大规模数据集的工具,支持多种数据类型以满足不同的需求。本文将详细介绍Hive的基本数据类型和集合数据类型。一、Hive基本数据类型Hive提供了多种基本数据类型,适用于不同的数据存储和处理需求:数据类型描述长度示例TINYINT1字......
  • 系统固态扩容-全小白操作示意 不需要BIOS
    机械革命有两个插槽,我有一个500G(系统盘)一个1T的固态,由于1.5T的固态都快用完了,所以买了一个2T的固态,将1T的内容迁移到2T中,将500G的迁移到1T中。为了防止内容丢失先将500G系统盘做了备份,用的傲梅轻松备份。1T->2T然后就是将2T的固态用绿联的固态盒子先当做移动硬盘,用分区助手进......
  • Qt - 文件操作3
    8.QSettings 8.1简介用户通常希望应用程序在会话中记住它的设置(窗口大小和位置,选项等)。这些信息通常存储在Windows上的系统注册表中(HKEY_CURRENT_USERSoftware/MySoft),以及macOS和iOS上的属性列表文件中。在Unix系统上,在缺乏标准的情况下,许多应用程序(包括KDE应用程序......
  • Qt - 文件操作2
    4.QFileInfo4.1简介QFileInfo类提供与系统无关的文件信息,QFileInfo提供了关于文件的名称和在文件系统中的位置(路径)、它的访问权限以及它是目录还是符号链接等信息。文件的大小和最后修改/读取时间也可用。4.2常用方法 boolisDir()const//.如果该对象......
  • neo4j 统计多个节点之间关系总和的写法-包含多个collect合并成一个并去重操作
    在使用neo4j数据库时,会遇到计算与指定节点产生关联的数量统计需求,例如指定6个节点1,2,3,4,5,6需要找出与这6个节点中4个节点有关联的节点(要求排除这6个节点的数据)先看实现查询语句:MATCH(start:person_info)-[r1]-(n)-[r2]-(end:person_info)WHEREstart.persocountIdin['1......
  • 使用异或操作实现字符串加密与解密
    异或加密是一种简单而有效的加密技术,它的特点是同一密钥可用于加密和解密,以下是一个例子:usingSystem;usingSystem.Text;publicstaticclassEncryption{///<summary>///bytes数据通过encryptCode进行异或(加密|解密)///将传入的bytes作为返回值,不再额外分......
  • `->` 操作符重载的注意事项
    在C++中,->操作符可以被重载,用于对象的指针成员访问。重载后的->操作符主要用于模拟指针访问行为,常见于智能指针的实现等复杂场景。->操作符重载后的调用触发流程:在对象上使用->操作符时,编译器按照以下步骤处理:检查对象类型是否有operator->()重载:如果对象是一个......
  • Flume实战--Flume中的拦截器详解与操作
            在处理大规模数据流时,ApacheFlume是一款功能强大的数据聚合工具,它可以通过拦截器在运行时对Event进行修改或丢弃。本文将详细讲解Flume中的拦截器,包括时间戳拦截器、Host添加拦截器、静态拦截器以及如何自定义拦截器。拦截器拦截器的作用拦截器用于在事件......
  • Django操作ES实现搜索功能
    Django操作ES实现题目的高亮搜索功能一、基础配置二、使用ES完成题目的高亮搜索1.ES的初始化接口2.使用ES实现题目的增删改查1.题目的高亮搜索2.题目的高亮搜索优化3.将数据存储到MYSQL中持久化存储并同步到ES中一、基础配置下载依赖,与之前配......
  • 记一次触发器用最新一条记录更新另外一条记录字段值的操作
    查询数据库里面最新一条记录的正确思路数据库里面的记录肯定有时间字段,找到时间的最大值,在where里面查询最新的的时间触发器查询的时候应该加上时间限制,不然随着时间的推移查询越来越慢触发器应该是beforeinsert类型不然会存在递归引用使用oracle函数或者mysql函数来执行时......