Hive
木良Duncan
这个作者很懒,什么都没留下…
展开
-
Hive Server2
概念HiveServer2(HS2)是一个服务端接口,使远程客户端可以执行对Hive查询并返回结果。目前基于Thrift RPC的实现是HiveServer的改进版本,并支持多客户端并发和身份验证。Hive与hiveServer的关系hiveserver是hive与client端的交换终端,client通过hiveserver构建查询语句,访问hadoop,并把数据通过hiveserver返回到client端hiveserver架构hiveserver的核心是基于Thrift,Thrift负责h原创 2023-03-26 08:25:25 · 378 阅读 · 0 评论 -
HQL:行转列,列传行
lateral view 用于和split、explode等UDTF一起使用,能够将一行数据拆成多行数据,再次基础上可以对拆分后的数据进行聚合。lateral view 首先为原始表的每行调用UDTF,UTDF会把一行拆分成一行或多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。collect_set(col):函数只接受基本数据类型,将某字段的值进行去重汇总,产生array类型字段。Split(str, separator):将字符串按照分割符切割,转化成字符array。原创 2023-03-26 08:23:07 · 194 阅读 · 0 评论 -
Hive有哪些保存元数据的方式,都有什么特点
内嵌模式:将元数据八寸在本地内嵌的derby数据库中,内嵌的derby数据库每次只能访问一个数据文件,不支持多会话连接。本地模式:将元数据保存在本地独立的数据库中(mysql),可以支持多会话连接。远程模式:将元数据保存在远程独立的mysql数据库中,避免每个客户端都要安装mysql数据库。原创 2023-03-26 08:23:28 · 193 阅读 · 0 评论 -
Hive中如何调整Mapper和Reducer的数目
1.设置reduce个数。原创 2023-03-26 08:19:56 · 420 阅读 · 0 评论 -
Hive的数据存储
以二进制方式存储,所以不可以直接读取,ORC文件也是自解析的,它包含许多元数据。ORC文件:保存在文件系统上的普通二进制文件,一个ORC文件可以包含多个stripe,每个stripe包含多条记录,这些记录按照列进行独立存储。parquet文件以二进制方式存储,所以不可以直接读取,和ORC一样,文件的元数据和数据一起存储。行存储文件(每一行就是一条记录),可以使用任意的分隔符进行分割,但无压缩,所以数据存储空间大。(1)ORC列式存储,有多种文件压缩方式,并且很高的压缩比。(2)可被各种文件系统识别的格式。原创 2023-03-26 08:17:12 · 894 阅读 · 0 评论 -
Hive的cluster by、sort by、distribute by、order by区别
*sort by:**不是全局排序,在数据进入reducer前完成排序。**distribute by:**类似MR中的partition ,进行分区,结合sort by使用。**order by:**对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)。只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。**cluster by:**当distribute by和sort by字段相同时,可以使用cluster by方式。排序只能时升序,不能指定排序规则。原创 2023-03-26 08:16:23 · 80 阅读 · 0 评论 -
Hive小文件过多如何解决
使用hive自带的concatenate命令,自动合并小文件concatenate 命令只支持 RCFILE 和 ORC 文件类型。使用concatenate命令合并小文件时不能指定合并后的文件数量,但可以多次执行该命令。当多次使用concatenate后文件数量不在变化,这个跟参数 mapreduce.input.fileinputformat.split.minsize=256mb 的设置有关,可设定每个文件的最小size。调整参数减少Map数量减少Reduce的数量reduce原创 2023-03-25 10:05:53 · 195 阅读 · 0 评论 -
Hive优化
针对hive中表的存储格式通常有orc和parquet,压缩格式一般使用snappy。因为hive底层使用MR计算架构,数据流是hdfs到磁盘再到hdfs,而且会有很多次,所以使用orc数据格式和snappy压缩策略可以降低IO读写,还能降低网络传输量,这样在一定程度上可以节省存储,还能提升hql任务执行效率;大表对大表:尽量减少数据集,可以通过分区表,避免扫描全表或者全字段。大表对小表:设置自动识别小表,将小表放入内存中去执行。并行执行,调节parallel参数;设置map、reduce参数;原创 2023-03-25 10:02:53 · 35 阅读 · 0 评论 -
Hive数据倾斜以及解决方案
发生数据倾斜的原因:1.任务重需要处理大量相同的key的数据。2.任务读取不可分割的大文件。6.确实无法减少数据量引发的数据倾斜。3.不可拆分大文件引发的数据倾斜。2.不同数据类型引发的数据倾斜。4.数据膨胀引发的数据倾斜。5.表连接时引发的数据倾斜。1.空值引发的数据倾斜。原创 2023-03-25 10:03:00 · 440 阅读 · 0 评论 -
Hive的执行流程
用户提交查询等任务给Driver。编译器获得该用户的任务Plan。编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。编译器Compiler得到元数据信息,对任务进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询计划,重写逻辑查询计划,将逻辑计划转化为物理的计划(MapReduce), 最后选择最佳的策略。将最终的计划提交给Driver。6.Driver将计划Plan转交给ExecutionEngine去执行,获原创 2023-03-25 09:58:41 · 409 阅读 · 0 评论 -
Hive SQL转化为MR的过程
.进入程序,利用Antlr框架定义HQL的语法规则,对HQL完成词法语法解析,将HQL转换为为AST(抽象语法树);遍历AST,抽象出查询的基本组成单元QueryBlock(查询块),可以理解为最小的查询执行单元;遍历QueryBlock,将其转换为OperatorTree(操作树,也就是逻辑执行计划),可以理解为不可拆分的一个逻辑执行单元;使用逻辑优化器对OperatorTree(操作树)进行逻辑优化。例如合并不必要的ReduceSinkOperator,减少Shuffle数据量;遍历Oper原创 2023-03-25 09:55:11 · 157 阅读 · 0 评论 -
Hive介绍
2.内部表的存储位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己指定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);1.数据更新:Hive是针对数据仓库设计的,数据仓库读多写少,所以Hive不建议对数据进行改写,所有数据都是加载后确定好的;被external修饰的位外部表,未被修饰的是内部表(管理表)原创 2023-03-25 09:52:16 · 234 阅读 · 0 评论 -
Hive架构
Hive的元数据包括表名,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。:完成HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有MapReduce 调用执行。:包括CLI(命令行)、JDBC/ODBC(JAVA)、WebGUI(WEB界面)。:把逻辑执行计划转换成可以运行的物理计划。:将AST编译生成逻辑执行计划。:对逻辑执行计划进行优化。原创 2023-03-25 09:47:55 · 33 阅读 · 0 评论