Hive相关知识

介绍

        hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供sql查询功能,能将sql语句转变为MR任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

1.hive中的内部表(管理表)与外部表的区别

        创建表:最明显的区别体现在创建表的语句上,使用external修饰的为外部表,其他为内部表;

        数据管理:内部表的数据管理由hive自身管理,外部表的数据管理由hdfs管理

        数据存储:内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse), 外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上 的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);

       表的删除:删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除。

2.hive索引

        Hive支持索引(3.0版本之前),但是Hive的索引与关系型数据库中的索引并不相同。并且    Hive索引提供的功能很有限,效率也并不高,因此Hive索引很少使用。比如,Hive不支持主键或者外键。Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MR任务中需要读取的数据块的数量。

Hive的索引目的是提高Hive表指定列的查询速度。
索引适用的场景:适用于不更新的静态字段。以免总是重建索引数据。每次建立、更新数据后,都要重建索    引以构建索引表。

3.ORC、Parquet等列式存储的优点

        ORC:ORC文件是自描述的,它的元数据使用Protocol Buffers序列化,文件中的数据尽可能的压缩以降低存储空间的消耗;以二进制方式存储,不可以直接读取;自解析,包含许多元数据,这些元数据都是同构ProtoBuffer进行序列化的;会尽可能合并多个离散的区间尽可能的减少I/O次数;在新版本的ORC中也加入了对Bloom Filter的支持,它可以进一 步提升谓词下推的效率,在Hive 1.2.0版本以后也加入了对此的支 持。

        Parquet:Parquet支持嵌套的数据模型,类似于Protocol Buffers,每一个数据模型的schema包含多个字段,每一个字段有三个属性:重复次数、数据类型和字段名;Parquet中没有Map、Array这样的复杂数据结构,但是可以通过repeated和group组合来实现;通过Striping/Assembly算法,parquet可以使用较少的存储空间表示复杂的嵌套格式,并且通常Repetition level和Definition level都是较小的整数值,可以通过RLE算法对其进行压缩,进一步降低存储空间;Parquet文件以二进制方式存储,不可以直接读取和修改,Parquet文件是自解析的,文件中包括该文件的数据和元数据。

4.sort by和order by的区别

        sort by:会起多个reduce,只会在每个reduce中排序,如果不指定分组的话,跑出来的数据看起来是杂乱无章的,如果指定reduce个数是1,那么结果和order by是一致的

        order by:实现的是全局排序,在hive mr引擎中将会只有1reduce

order by一般配合group by使用,而group by需要配合聚合函数使用,而sort by分组时需要使用distribute by,和group by类似,但是它不需要配合聚合函数使用,也就不影响原数据的函数,这点和开窗函数有点类似

distribute by还有个简化版,当distribute by和sort by的字段相同时,可以简写为cluster by

order by是全局排序,sort by是组内排序。distribute by sort by可以结合桶表使用,给桶中的数据排序。

5.hive小文件过多的解决方案

        使用 hive 自带的 concatenate 命令,自动合并小文件

        调整参数减少Map数量

        减少Reduce的数量

        使用hadoop的archive将小文件归档

6.hive的优化

        数据存储及压缩

        通过调参优化

        有效地减小数据集将大表拆分成子表;结合使用外部表和分区表

        SQL优化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值