数仓工具—Hive进阶之优化map任务数量(9)

本文详细探讨了为何要控制Hive的map任务数量,并提供了两种调整map数量的方法:增加或减少mapper个数。内容涵盖输入数据对map数的影响,map个数计算,以及小文件过多的问题和解决方案。案例展示了如何通过优化map任务数量来提升任务执行效率,强调控制map数量需兼顾大数据量的处理和单个map任务的数据量适中。
摘要由CSDN通过智能技术生成

控制 map 任务数量

为什么要控制 map 数量

我们先来了解下什么情况要设置 map 数量。一般来讲,map 数量默认,不需要我们设置,一般情况下,Hive 自己就可以知道到底使用多少个map。

但是,当我们明确知道表的数据量不大,而 Hive 运行启动了几千个 map 的时候,就有必要减小 map 的数量了。好比 1000 个西瓜没必要安排 100 辆车去拉,安排 2 辆车就可以搞定了。

另一方面,当我们发现 map 数量不多,但 map 运行速度极慢的时候。这时可以看一下数据,看看实际需求是不是很大?如果 Hive 启动的 map 数据比较少,就如同用 2 辆车去拉 10000 个西瓜,明显是不够的。

假设如果真遇到上面情况,那么如何调整 map 数量?我们通常会采用以下两种方式解决。

  • 第一种解决办法是增加 mapper 个数。可以设置 set mapred.map.tasks= 一个很大的数值, 需要比系统默认的 map 数量大。
  • 第二种解决办法是减少 mapper 个数。set maperd.min.split.size= 一个数字,该数值单位是字节,比如设置 1GB,即为 102400000
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
针对电商数仓Hive优化,可以从以下几个方面入手: 1. 据分区:对于大规模据的查询,使用分区表可以大幅度提高查询效率。可以按照日期、地域等维度进行分区。 2. 压缩存储:在Hive中,使用压缩存储可以减小据的存储空间,同时也能提高查询效率。可以使用Gzip、Bzip2、Snappy等压缩方式。 3. 据倾斜处理:在实际场景中,可能会出现某些字段的值非常集中,导致查询时某些节点负载过重,出现据倾斜。可以采用一些技术手段,如随机、哈希函等进行据均衡。 4. 动态分区:动态分区可以在查询的同时动态创建分区,避免手动创建分区的麻烦。 5. 合理设置参Hive的性能与参设置密切相关,如MapReduce任务并行度、内存大小、IO缓存等。合理设置这些参可以提高查询效率。 具体的优化包括: - hive.exec.dynamic.partition.mode:设置动态分区模式,可以设置为nonstrict或strict。 - hive.exec.dynamic.partition:是否允许动态分区,默认为true。 - hive.exec.max.dynamic.partitions:设置动态分区最大值。 - hive.exec.max.dynamic.partitions.pernode:每个节点的最大动态分区。 - hive.auto.convert.join:是否开启自动转换Join,可以提高Join的效率。 - hive.optimize.bucketmapjoin.sortedmerge:是否开启Bucket Map Join Sorted Merge。 - hive.exec.parallel:设置MapReduce任务并行度。 - hive.vectorized.execution.enabled:是否开启矢量化查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不二人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值