第一章 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进行并行计算,因此可以支持很大规模的数据,对应地,数据库可以支持的数据规模较小。

大数据2--hive--hive介绍相关推荐

  1. hive使用适用场景_大数据入门:Hive应用场景

    在大数据的发展当中,大数据技术生态的组件,也在不断地拓展开来,而其中的Hive组件,作为Hadoop的数据仓库工具,可以实现对Hadoop集群当中的大规模数据进行相应的数据处理.今天我们的大数据入门分 ...

  2. B06 - 999、大数据组件学习③ - Hive

    初学耗时:999h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 『   因为要去见那个不一般的人,所以我就不能是一般人.』  B99.要学就学大数据 - B系列总纲   ...

  3. 大数据面试之hive重点(二)

    大数据面试之hive重点(二) Hive SQL转化为MR的过程? 可回答:1)Hive SQL的解析过程:2)Hive SQL的底层实现 问过的一些公司:阿里,头条,小米,滴滴,美团x2,网易,快手 ...

  4. 大数据基础之Hive(四)—— 常用函数和压缩存储

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...

  5. 大数据面试之Hive常见题目

    大数据面试之Hive常见题目 1. Hive的架构 1.重点四个器:解释器(SQL Parser).Driver:编译器(Compiler),优化器(Optimizer),执行器(Executor) ...

  6. Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频

    Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频 Author:Cris 文章目录 Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频 Author:Cr ...

  7. 大数据知识面试题-Hive (2022版)

    序列号 内容 链接 1 大数据知识面试题-通用(2022版) https://blog.csdn.net/qq_43061290/article/details/124819089 2 大数据知识面试 ...

  8. 大数据和Hadoop平台介绍

    大数据和Hadoop平台介绍 定义 大数据是指其大小和复杂性无法通过现有常用的工具软件,以合理的成本,在可接受的时限内对其进行捕获.管理和处理的数据集.这些困难包括数据的收入.存储.搜索.共享.分析和 ...

  9. 第三课 大数据技术之Spark-RDD介绍和转换算子

    第三课 大数据技术之Spark-RDD介绍和转换算子 文章目录 第三课 大数据技术之Spark-RDD介绍和转换算子 第一节 RDD相关介绍 1.1 什么是 RDD 1.2 核心属性 1.3 执行原理 ...

  10. (1)大数据和应用场景介绍

    专栏目录 (1)大数据和应用场景介绍 (2)大数据技术综述总结 (3)HDFS原理与高可用技术原理介绍 (4)Yarn架构.资源管理原理和运维技术介绍 (5)Kafka原理和高可用介绍 1.大数据基本 ...

最新文章

  1. VTK:折线用法实战
  2. Redis:05---键的基本命令(下) 生存周期
  3. 数据结构 - 队列(图解+源码)
  4. 使用axis2 services.xml 发布web service
  5. ASP.net AJAX 调用PageMethods实例
  6. 初学Jmeter的摘抄学习总结----------基础知识篇
  7. C/C++ 取整函数ceil(),floor(),向上取整,向下取整
  8. 分布式事务之基础理论(CAP/BASE理论)篇
  9. 数独用计算机控制比数学家还厉害,用pl/sql解决芬兰数学家因卡拉设计的最难数独...
  10. xcode 打包ipa
  11. Mybatis中利用PageHelp分页功能的实现
  12. foxpro获取html数据类型,FoxPro数据库写入html文件中
  13. 海豚湾,变态的日本银
  14. 乘风破浪程序猿,拒绝原地踏步!
  15. 【TS】泛型 Generics
  16. 图像质量评价指标FID、LPIPS、NIQE及其代码
  17. 网易云音乐爬虫 数据可视化分析
  18. 工商名人堂 爱德华·约翰逊二世---富达基金的崛起(转载自新浪)
  19. 青少年软件编程C++三级题库(1-10)
  20. 什么是IO多路复用,理解IO多路复用

热门文章

  1. 人生重开模拟器怎么刷到神秘的小盒子
  2. Flask项目实战--管理系统
  3. 用快递单号快速查询物流退回件的单号
  4. 美图旗下美妆平台将停止运营 COO:All in “美和社交”
  5. 微软仍计划在2017年发布两次Windows 10系统升级
  6. 英超卡迪夫城新援飞机失联 搜救工作已经展开
  7. 一念起,万水千山;一念灭,沧海桑田。
  8. 计算机安全法的发行日期,网络安全法实施时间,网络安全法是什么时候实施的?...
  9. mysql innodb 数据打捞(一)innodb 页面结构特征
  10. (3)复式记账-借贷法