hive 字段个数限制_小白篇(八):大数据Hive参数优化

本文介绍了如何针对Hive进行参数优化,以避免字段个数限制等问题。通过CDH界面配置Hive组件,特别是对'hive-site.xml'的优化,包括客户端、服务端和接口服务端的设置。重点讲解了动态分区配置、查询优化、小文件优化和临时执行配置(set关键字)。建议结合CDH界面配置和SQL前的set参数设置,以实现最佳优化效果。
简短介绍
大家好,国庆马上就要结束了,该调整下了哦。有的小伙伴们会觉得放假比上班还累。那是过度消费假期哦。其实大家时间长得很,控制下小小的贪玩心,注意锻炼好身体比什么都重要。好吧,啰嗦了。今天给大家分享下Hive参数优化。

01

如何进行Hive参数优化

下面我们基于CDH安装的Hadoop集群进行分享。优化后,可以使我们运行的代码不会提示莫名其妙的错误(如:动态分区数量不够)

20cb9d26fb850d3648d0ce68dd160303.png

  • 基于CDH界面配置(Hive优化)

步骤一、集群安装完成后,找到Hive组件。点击进去。

448bfe4bd96973fa2c5a5a2f66144917.png

步骤二、选择“配置”

d2988a5093471d2ac433d08a0d708a0c.png

步骤三、通过筛选查找想优化的选项。

e500ce96f1407a02b03994d5382f9655.png

步骤四、我们主要讲解下“hive-site.xml” 的优化配置。 在这个xml中承载了Hive绝大部分的运行优化(即:sql运行过程中的执行优化。如资源、小文件个数、允许的分区个数等等)。

hive-site.xml 有对:客户端、服务端、接口端的优化配置

ea68dc85652046fdc60a586807d0aa02.png

服务端

d79dcbc6c7b09db3b0494a4d938a7d52.png

客户端

422a69fb437de8dcf1d0ac6db353a5d3.png

接口服务端(截图位置为测试环境:本人尚未做配置优化)

76d761074714597a45b966c7187ed682.png

步骤五、在每个hive-site.xml中均可配置如下配置进行一些优化

  • 显示库名、字段名配置

<property><name>hive.cli.print.current.dbname><value>truevalue><description>显示库名称description>property><property><name>hive.cli.print.headername><value>truevalue><description>显示表列名description>property>
  • 动态分区配置

<property><name>hive.exec.dynamic.partitionname><value>truevalue><description>开启动态分区description>property><property><name>hive.exec.dynamic.partition.modename><value>nonstrictvalue><description>动态分区模式description>property><property><name>hive.exec.max.dynamic.partitionsname><value>100000value><description>动态分区上限description>property><property><name>hive.exec.max.dynamic.partitions.pernodename><value>100000value><description>mapreduce可创建分区上限description>property>
  • 查询优化

<property><name>hive.cbo.enablename><value>truevalue><description>去除多余mapreducedescription>property><property><name>hive.exec.parallelname><value>truevalue><description>开启job并行description>property><property><name>hive.exec.parallel.thread.numbername><value>16value><description>job并行数量description>property><property><name>hive.optimize.reducededuplicationname><value>truevalue><description>简单查询只包括一个group by和order by,将字段设置为1或2description>property><property><name>hive.auto.convert.joinname><value>truevalue><description>根据文件大小决定是否使用Map Joindescription>property><property><name>hive.auto.convert.join.noconditionaltaskname><value>truevalue><description>根据无条件关联的语句决定是否使用Map Joindescription>property>
  • 小文件优化

<property><name>hive.merge.mapfilesname><value>truevalue><description>开启小文件合并description>property><property><name>hive.merge.mapredfilesname><value>truevalue><description>开启小文件合并description>property><property><name>hive.merge.tezfilesname><value>truevalue><description>tez压缩文件合并description>property><property><name>hive.merge.sparkfilesname><value>falsevalue><description>spark文件合并description>property><property><name>hive.merge.size.per.taskname><value>536870912value><description>合并的大小description>property><property><name>hive.merge.smallfiles.avgsizename><value>536870912value><description>合并的大小description>property><property><name>hive.merge.orcfile.stripe.levelname><value>truevalue><description>orc合并description>property>
  • 临时执行配置(set 关键字)

此方式,需要在每次运行sql最前面set 参数。上面提到的参数,均可在sql前面set。当然不仅仅只有这些参数哦。

例如:

set hive.execution.engine=spark; -- 设置执行引擎sparkset spark.app.name=hive_运行的别名; -- 设置运行别名.不设置即默认显示运行sql的前面几个字符,不方便知晓运行sql的真实目的select name,max(id) id from dc_dev.test_tab;-- sql最前面set 参数后,在会话中临时生效。即当前连接的情况下。-- 一旦连接中断或关闭,需要重新set

两种配置方式对比

对比项基于cdh界面配置临时执行配置(set)
影响范围全局(所有sql代码)局部(当前会话提交的sql)
灵活度不高
简便度简单(一次配置,每次生效,无需set)复杂(每次需set)
参数优先级比局部set低比统一配置高

说明:对于一些常规优化,可以通过cdh界面配置即可。但是针对特殊场景还是需要采用set的方式来进行优化。相互结合使用。

02

小结

Hive参数优化可不仅仅是上面所说的这些哦,也需要小伙伴们自己发现优化点。这里只是说的一些常规优化点,带大家入门而已。大家可根据实际工作情况进行探索。保持好奇心好学心,多思考。有时候学习真的是个人的事情,别人只能是指点下,后续的精进程度只能是自己去悟了。坚持、加油!广告(大数据学习)打个小广告,如果真心想学大数据,后台留言。免费开些直播课程教教小伙伴们(真实工作体验)。如果感觉还行,再讨论付费课程,远比市面上便宜,学得真实(毕竟本人还在厂里上班)。我们有在平安、众安、同程、美团工作的小伙伴。虽然大部分做的架构的事,但是我们都是小屌丝。都是为了生活而努力,各位一起加油!

如果大家喜欢可关注公众号,感谢!

1fba09396f6f969310993373343ae0da.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值