栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive 动态写入大量分区oom及速度慢的解决办法

hive 动态写入大量分区oom及速度慢的解决办法

1.内存优化

列式存储的文件在写入文件之前都会将一定数量的数据缓存在内存中,由于hive每个动态分区目录都会打开一个文件写入器(file writer),所以当存在很多分区的时候,有可能会导致mapper OOM,所以需要增加内存。或者限制每次任务的分区数。另外缓冲区(file buffer)的大小最好跟block一样大,set Parquetbuffer size=blocksize

2.开启hive.optimize.sort.dynamic.partition

通过explain 发现 动态分区跟sqoop一样 一般是没有reduce的, 每个partition每个map会打开一个filewriter,所以可以强制开启reduce,这样,我们可以为 reducer 中的每个分区只保持一个filewriter,从而减少 reducer 的内存压力。注意:在hive4.0以后会删除并被替换为 hive.optimize.sort.dynamic.partition.threshold

参数解释:
默认值:true在 Hive 0.13.0 和 0.13.1 中; false 在 Hive 0.14.0 及更高版本中 ( HIVE-8151 )
添加于:Hive 0.13.0 和HIVE-6455
已弃用:替换为 hive.optimize.sort.dynamic.partition.threshold
在 Hive 4.0 中使用 HIVE-25320移除

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761967.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号