在我的配置单元查询中有一个连接,它会导致在两个连接键上产生很多偏差。reduce作业的平均运行时间为1小时15分钟,但有2个reduce作业的运行时间超过6小时。hive.skewjoin.key的阈值是100万行,我很确定至少有1000个键的行数超过了100万行,前两个键的行数都接近10亿行。我试着使用hive.optimize.skewjoin以及一些相关的配置,但这似乎没有起到任何作用。具体来说,它没有像承诺的那样动态地将查询分成两部分。我不确定到底为什么-是否有一些相互冲突的参数不允许将倾斜的键进一步拆分为更平衡的mr作业,或者mr只是在运行时没有检测到倾斜。如有任何想法或帮助,我们将不胜感激!我的配置如下-
set hive.groupby.orderby.position.alias = true;
set hive.support.quoted.identifiers = none;
set hive.auto.convert.join = true;
set hive.mapjoin.smalltable.filesize = 157286400;
set hive.exec.compress.intermediate = true;
set hive.merge.mapredfiles = true;
set hive.merge.mapfiles = true;
set hive.cli.print.header = true;
set hive.exec.parallel = false;
set mapreduce.map.java.opts = -Xmx8192m -XX:+UseConcMarkSweepGC;
set mapreduce.map.memory.mb = 10480;
set mapreduce.reduce.java.opts = -Xmx8192m -XX:+UseConcMarkSweepGC;
set mapreduce.reduce.memory.mb = 10480;
set mapreduce.reduce.shuffle.memory.limit.percent = .65;
set mapreduce.task.io.sort.mb = 2047;
set hive.cli.errors.ignore = false;
set hive.optimize.skewjoin =true;
set hive.skewjoin.key =1000000;
set hive.skewjoin.mapjoin.map.tasks =30000;
set hive.skewjoin.mapjoin.min.split =33554432;
暂无答案!
目前还没有任何答案,快来回答吧!