hive小结

栏目: 服务器 · 发布时间: 5年前

内容简介:自动化了 MapJoin,之后我们就不需要在 query 中再写了。MapJoin 用于小表 Join 大表的场景,在大表通过 Mapper 时,小表会被完全放入内存中,Hive 会在 map 端进行连接,因为 Hive 可以和内存中的小表进行逐一匹配,从而省略掉 reduce 过程。参数 hive.exec.parallel 控制着同一个 sql 中是否允许并行执行,默认为 false,设置为 true 则开启任务的并行执行。并通过设置 hive.exec.parallel.thread.number 来

自动化 MapJoin

set hive.auto.convert.join=true;

自动化了 MapJoin,之后我们就不需要在 query 中再写了。MapJoin 用于小表 Join 大表的场景,在大表通过 Mapper 时,小表会被完全放入内存中,Hive 会在 map 端进行连接,因为 Hive 可以和内存中的小表进行逐一匹配,从而省略掉 reduce 过程。

任务并行

set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=100;

参数 hive.exec.parallel 控制着同一个 sql 中是否允许并行执行,默认为 false,设置为 true 则开启任务的并行执行。并通过设置 hive.exec.parallel.thread.number 来指定同一个 sql 允许并行运行的最大线程数。

设置超时时间

set mapred.task.timeout=600000000;

这里设置的是 Job 运行多久后会因超时而被 kill 掉,根据数据量而定。我目前工作中处理的数据有上亿条,维度近千,所以设置得比较大。

“健康监测”

set mapred.healthChecker.script.timeout=600000000;

这个参数的作用是,若检测到脚本在一定时间内无响应,那么 NodeHealthCheckerService 线程会将该节点的监控状态标注为 “unhealthy”。但 Hadoop 2.x 以后,参数 mapred.healthChecker.script.timeout 的名字已经改为 mapreduce.tasktracker.healthchecker.script.timeout,虽然原名还可用,最好还是使用新的参数名。

设置容量大小

set hive.tez.container.size=10240;

Tez 是 YARN 的作业模式,hive.tez.container.size 参数可设置堆的大小,即增大内存容量。由于 D12 计算机具有 28GB 内存,因此我们常使用 10GB (10240MB) 大小的容器。

设置聚集操作执行时机

set hive.map.aggr=false;

若将该参数设置为 true,则会在 mapper 端先进行 group by,然后执行 merge 操作,减少 reduce 要处理的数据量,效率更高但需要更多内存。若将该参数设置为 false,则把前面的步骤放在了 reduce 阶段再进行。设置 reduce 个数set mapred.reduce.tasks=500;该参数用于设置 reduce 的任务个数,设置为500,即生成500个文件。根据具体数据量进行调整,使得单个 map 能处理合适的数据量。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息规则

信息规则

[美] 卡尔・夏皮罗(Carl Shapiro)、[美] 哈尔・瓦里安(Hal Varian) / 张帆 / 中国人民大学出版社 / 2000-6 / 33.00元

本书的目标是,运用网络经济中的经济学知识,从经济研究和作者自己的经验中提取出适合信息相关产业的经理们的知识。本书描述的思想、概念、模型和思考方法会帮助读者作出更好的决策。一起来看看 《信息规则》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具