大数据2--hive--hive介绍

article/2025/7/6 13:44:27

第一章 Hive介绍

1.1hive概述

1.1.1 hive的简介

        HIve是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQK查询功能。其本质是将SQL转换为MapReduce/Spark的任务进行运算,底层由HDFS来提供数据的存储,说白了,hive可以理解为一个将SQL转换为MapReduce/spark任务的工具。

1.1.2 HIve的特点:

  • 可扩展性: Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

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

  • 容错性:良好的容错性,节点出现问题,SQL仍可以完成执行。

1.2 hive架构

 

用户接口:包括CLI,JDBC/ODBC,WebGui

元数据存储:通常是存在关系数据块例如mysql/derby中。Hive将元数据存储在数据库中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表),表的数据所在目录等。

解释器,编辑器,优化器,执行器:完成HIve查询语句从词法分析,语法分析,编译,优化以及查询计划的生成,生成的查询计划存储在HDFS中,并在随后被MapReduce调用执行。

1.3 HIve计算引擎

目前Hive支持MapReduce, Tez和Spark三种计算引擎。

1.3.1 MR计算引擎  

        Map 在读取数据时,先将数据拆分成若干数据,并读取到 Map 方法中被处理。数 据在输出的时候,被分成若干分区并写入内存缓存(buffer)中,内存缓存被数 据填充到一定程度会溢出到磁盘并排序,当 Map 执行完后会将一个机器上输出的 临时文件进行归并存入到 HDFS 中。当 Reduce 启动时,会启动一个线程去读取 Map 输出的数据,并写入到启动 Reduce 机器的内存中,在数据溢出到磁盘时会对数据进行再次排序。当读取数据完成后 会将临时文件进行合并,作为 Reduce 函数的数据源。

1.3.2 Tez计算引擎

        Tez是进行大规模数据处理且支持DAG作业的计算框架,它直接源于MapReduce框架,除了能够支持MapReduce特性,还支持新的作业形式,并允许不同类型的作业能够在一个集群中运行。

1.3.3 Spark计算引擎

        Spark是专门为大规模数据处理而设计的快速,通用支持DAG(有向无环图)作业的计算引擎,类似于Hadoop MapReduce的通用并行框架,可用来构建大型的,低延迟的数据分析应用程序。

1.4 Hive数据抽样

        当数据规模不断膨胀的时候,我们需要找到一个数据的子集来加快数据分析效率。因此我们就需要通过筛选和分析数据集进行模式和趋势识别。目前来说,有三种方式来进行抽样:随机抽样,桶表抽样,块抽样。

1.4.1随机抽样

        使用rand()函数进行随机抽样,limit关键字限制抽样返回的数据,其中rand()函数前的distribute和sort关键字可以保证数据在mapper和reducer阶段是随机分布的。

案例1:

select * from table_name

where col = xxx

distribute by rand() sort by rand()

limit num;

案例2:使用order关键字:

select * from table_name

where col = xxx

order by rand()

limit num;

对比:在千万级数据中进行随机抽样,order by方式耗时更长。

1.4.2 块抽样

关键字:tablesample() 函数。

1)tablesample(n percent) 根据hive表数据的大小按照比例抽取数据,并保存到新的hive表中。eg: select * from xxx tablesample(10 percent)

2)tablesample(nM)指定抽样数据的大小,单位为M。

        eg:select  *  from  xxx   tablesample(20M)

3)tablesample(n rows)指定抽样数据的行数。

        eg: select * from xxx tablesample(100 rows)

1.4.3 桶表抽样

关键词:tablesample(bucket x out of y [on colname]).其中x是要抽样的桶编号,桶编号从1开始,colname表示抽样的列,y表示桶的数量。

    eg: select *  from  table  tablesample(bucket 1 out of 10 on rand())

1.5 Hive存储压缩

    HIve存储格式

1.5.1行式存储和列式存储

        Hive支持的存储格式主要有:TextFile(行式存储),SequenceFile(行式存储),ORC(列式存储),Parquet(列式存储)。

 

        行存储的特点:查询满足条件的一整行数据的时候,列存储需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中其中一个值,其余值都在相邻地方,所以此时行存储查询的速度更快。

        列存储的特点:因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能够大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的压缩算法。

1.5.2 TextFile

        默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合 Gzip、Bzip2 使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive 不会对数 据进行切分,从而无法对数据进行并行操作。

1.5.3 ORC格式

        Orc(Optimized row Columnar).可以看到每个Orc文件由一个或者多个Strip组成,每个Strip的大小是250MB,这个Strip实际相当于RowGroup概念。每个Strip由三部分组成,分别是Index Data, Row Data, Stripe Footer.

1.5.4 Parquet格式

        Parquet 文件是以二进制方式存储的,所以是不可以直接读取的,文件中包括该 文件的数据和元数据,因此 Parquet 格式文件是自解析的。 通常情况下,在存储 Parquet 数据的时候会按照 Block 大小设置行组的大小,由 于一般情况下每一个 Mapper 任务处理数据的最小单位是一个 Block,这样可以 把每一个行组由一个 Mapper 任务处理,增大任务执行并行度

Hive压缩

1.5.5 压缩

1)数据压缩比结论:

        ORC > Parquet > textFile

2)存储文件的查询效率比较:

        ORC > TextFile > Parquet

3)创建一个Snappy压缩的ORC存储方式:

        row format delimited fields terminated by ‘\t’ stored as orc tblproperties(“orc.compress” = “snappy”);

1.6 Hive和数据库的比较

        1)查询语言

         专门针对Hive设计了类SQL的查询语言HQL。

        2)数据更新

         由于Hive是针对数据仓库应用设计的,而数据仓库的内容是读多少写多少的。因此Hive中不建议对数据的改写,所有的数据都是在加载的时候确定好的,而数据库中的数据通常是需要经常修改的。

        3)执行延迟

        Hive在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致Hive延迟高的因素是MapReduce框架。由于MapReduce本身具有较高的延迟,因此,在利用MapReduce执行Hive查询的时候,也会有较高的延迟。

        4)数据规模

         由于Hive建立在集群上并且可以利用MapReduce进行并行计算,因此可以支持很大规模的数据,对应地,数据库可以支持的数据规模较小。

文章来源:https://blog.csdn.net/yezonghui/article/details/120936448
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://chatgpt.dhexx.cn/article/4HIGV3io.shtml

相关文章

【大数据实验2】hadoop配置、测试和实例

hadoop配置、测试和实例 0 环境1 配置网络2 卸载和安装JDK4 配置hadoop4.1 前提4.2 修改配置文件4.3 配置环境4.4 初始化HDFS4.5 启动hadoop4.6 登录 5 测试hadoop6 hadoop实例:统计单词频数6.1 编程实现6.1.1 安装eclipse6.1.2 JAVA编程6.1.3 上传文件6.1.4 运行程…

大数据1

cd sysconfig(目录名) 进目录 ll(listlist) 查看所有的目录 cat 看目录里的内容打开文件 ~当前目录的用户主体目录 cd / 根路径 pwd 当前路径 vi 修改文件 敲I 才可以编辑 然后更改BOOTPROTO"STATIC" IPADDRIP地址19…

大数据2 Hadoop

Hadoop是Apache软件基金会下的顶级开源项目,用以提供: • 分布式数据存储 • 分布式数据计算 • 分布式资源调度 为一体的整体解决方案。 Apache Hadoop是典型的分布式软件框架,可以部署在1台乃至成千上万台服务器节点上协同工作。 个人或企…

数分-理论-大数据2-Hadoop

数分-理论-大数据2-Hadoop (数据分析系列) 文章目录 数分-理论-大数据2-Hadoop1知识点2具体内容2.1发展2.2简介2.3项目架构2.4安装应用 参考 1知识点 发展简介项目架构安装应用 2具体内容 2.1发展 Lucene:文本搜索的函数库,全文检索引擎Nutch&…

大数据2

机器学习和数据挖掘的区别 数据挖掘是一个比较大的概念,由许多学科综合而成,其包括机器学习、统计学习、数据库、领域知识及模式识别等领域。数据挖掘与机器学习可以看成是一种相交关系,两者都是依靠规律分析来预测数据趋势的,但不…

大数据行业部署实战2:环境大数据统计

实验二、环境大数据(必须基于实验一验证通过的环境) 一、实验目的二、实验要求三、实验原理四、实验步骤1、 分析数据文件2、 将数据文件上传至HDFS3 、编写月平均气温统计程序4 、查看月平均气温统计结果5、 编写每日空气质量统计程序6、 查看每日空气…

大数据(2)--Hadoop

目录标题 1.初识大数据1.1 大数据相关技术1.2 日志流量分析系统1.2.1 项目设计1.2.2 日志的捕获1.2.3 离线分析1.2.4 实时分析 1.3 系统搭建 2.Hadoop2.1 Hadoop概述2.1.1 历史2.1.2 作用 2.2 Hadoop的安装2.2.1 Hadoop版本介绍2.2.2 Hadoop 的安装有三种方式2.2.3 Hadoop伪分布…

《大数据时代》书评及书摘

三天的零碎时间把这本书读完了,内容本身其实很简单,也谈不上特别精彩,五分制的话我只能打三分。 我的理解,数据一生应该是包含了三个阶段:收集,分析,最后是预测。我们总能根据现有的数据&#x…

Python 与SQL sever数据库 图形化智能停车场管理系统

这个是我的一次课程设计,写了236行代码,都是最简单的函数和图形化界面。特别简单。首先你应该确保你的SQL数据库可以在Pycham中连接成功。不会SQL连接的的可以去其他博客写看一看。在Pycham中需要安装 Tkinter win32com.client 第三方库。 序言界面截…

asp毕业设计——基于asp+sqlserver的WEB车辆管理系统设计与实现(毕业论文+程序源码)——车辆管理系统

基于aspsqlserver的WEB车辆管理系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于aspsqlserver的WEB车辆管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模…

基于Java+控制台实现车辆信息管理系统

基于Java控制台实现车辆信息管理系统 一、系统介绍二、功能展示1.主要功能2.查看所有车辆信息3.车辆信息添加4.车辆信息查询5.车辆信息删除 三、系统实现1.car.java 四、其它1.其他系统实现 五、源码下载 一、系统介绍 该系统实现了简单的增删查改、采用面对对象(O…

qt 汽车管理系统

界面设计 运行后界面 数据库表: connection.h文件 #ifndef CONNECTION_H #define CONNECTION_H #include<Qtsql> #include<QDebug> #include<qdom.h> #include<QDebug> #include <QSqlQuery> static bool createConnection() { // "O…

计算机毕业设计-基于SSM的汽车维修管理系统

项目背景 随着计算机技术的高速发展&#xff0c;现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展。而汽车维修&#xff0c;不仅需要在硬件上为现代社会的人们提供一个汽车维修的平台&#xff0c;获取汽车知识的环境&#xff0c;更要在软件上为车辆提供汽车维…

ASP.NET+C#+Sql Server 1125数据库 汽车租赁系统的设计与实现+讲解视频

绪论 随着汽车行业的快速发展&#xff0c;汽车租赁行业交易的数量也随之增加&#xff0c;自2000年起&#xff0c;我国汽车租赁交易量开始进入一个快速发展的状态&#xff0c;也是汽车行业市场经济发展的重要一部分&#xff0c;近几年&#xff0c;越来越多汽车租赁公司进军当前…

Java项目:springBoot+Vue汽车销售管理系统

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目基于spring boot以及Vue开发&#xff0c;为前后端分离的项目。针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能…

基于JSP的物流公司信息管理系统设计与实现

目 录 第一章 绪论 1 1.1 研究背景 1 1.2课题研究意义 1 1.3 国内外的研究状况 2 第二章 相关技术分析 3 2.1技术简介 3 2.2 工作原理 3 2.3体系结构 3 2.4编程语言的特点 3 2.5 数据库 4 第三章 需求分析 5 3.1 可行性分析 5 3.1.1 经济可行性 5 3.1.2 技术可行性 5 3.1.3 运…

C#毕业设计——基于C#+asp.net+sqlserver的汽车销售管理系统设计与实现(毕业论文+程序源码)——汽车销售管理系统

基于C#asp.netsqlserver的汽车销售管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于C#asp.netsqlserver的汽车销售管理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及…

汽车销售管理系统

文章目录 汽车销售管理系统**背景****环境****项目结构**项目详情**数据库****DBConn.java****Login.java****Data.java****CircleProgressBar.java**运行截图 汽车销售管理系统 背景 Java基础课程设计 环境 数据库&#xff1a;MySQL8.0开发环境&#xff1a;JDK1.8开发工具…

Java+SSM+Jsp+Mysql实现Web汽车信息管理系统

目录 一、系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.工程截图 二、系统展示 1.登录系统 2.系统首页 3.用户管理-添加用户 4.用户管理-查询用户 5.用户管理-修改用户 6.客户管理-添加客户 7.客户管理-查询客户 8.客户管理-修改客户 9.汽车管理-…

基于Java+Swing+Mysql实现汽车信息管理系统(含实训报告)

TOC 一、系统介绍 系统实现汽车入库&#xff0c;汽车出库&#xff0c;汽车查询&#xff0c;汽车信息修改和管理员登录等功能 二、功能展示 1.登陆 2.车辆信息 3.车辆入库 4.车辆出库 5.车辆查询 6、车辆信息修改 三、数据库 /*Navicat Premium Data TransferSource Serv…