FAQ-数据倾斜报错
更新时间: 2024-03-11 02:51:45
阅读 1090
数据倾斜报错
问题描述/异常栈
数据倾斜报错
解决方案
可尝试添加以下参数
是否开启map端聚合任务,默认值是true。
set hive.map.aggr = true;
Map 端组聚合哈希表将使用的最大内存。如果内存使用量大于此数量,则强制刷新数据。默认0.9
set hive.map.aggr.hash.force.flush.memory.threshold = 0.9;
默认0.5,表示开启map任务的聚合所使用到的hash表,所能占用到整个Map被分配内存够的50%。
set hive.map.aggr.hash.percentmemory = 0.5;
是否启用倾斜连接优化,默认false
set hive.optimize.skewjoin = true;
如果作为join 连接项的键超过了这个行数,可以视为数据倾斜键。默认10000
set hive.skewjoin.key = 10000;
确定在后续 Map 连接作业中用于偏斜连接的 Map 任务的数量,和hive.skewjoin.mapjoin.min.split一起配合使用
set hive.skewjoin.mapjoin.map.tasks = 10000;
通过指定最小拆分大小,确定在后续 Map 连接作业中用于偏斜连接的最多 Map 任务数,默认33554432
set hive.skewjoin.mapjoin.min.split = 33554432;
是否在编译的时候根据Hive metastore中元数据为数据倾斜的倾斜键分配单独的连接。一个作为正常的连接。最后两个做并集计算,注意,如果元数据中没有记录这些统计信息的话,该配置项不会生效,默认false。
set hive.optimize.skewjoin.compiletime = true;
问题原因
由于数据倾斜,大表join大表导致数据切斜
作者:焦巍
文档反馈
以上内容对您是否有帮助?