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 能处理合适的数据量。


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

查看所有标签

猜你喜欢:

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

电商运营之道:策略、方法与实践

电商运营之道:策略、方法与实践

吴伟定、姚金刚、周振兴、郑琰 / 机械工业出版社 / 2015-9-1 / 49

电商运营之道:策略、方法与实践是一本电商的运营指南,适合所有的电商从业人员阅读,也适合打算进入或打算在电商行业创业的读者朋友阅读。分别从策略、方法与实践三个方面全景式展示电商运营的内在商业规律与管理逻辑。一起来看看 《电商运营之道:策略、方法与实践》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具