无法增加配置单元Map程序任务?

d7v8vwbk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(307)

我有一个托管配置单元表,它只包含一个150mb的文件。然后我对它执行“selectcount(*)fromtbl”,它使用2个Map器。我想把它调大一点。
首先,我尝试了“set mapred.max.split.size=8388608;”,因此,希望它将使用19个Map器。但它只使用3。不知怎的,它还是将输入拆分了64mb。我还使用了“set dfs.block.size=8388608;”,也不行。
然后我试着做同样的事情。它最初使用3个Map器,当我设置mapred.max.split.size时,它使用19个。我想问题出在Hive里。
我读了一些配置单元的源代码,比如combinehiveinputformat、execdriver等等,都找不到线索。
我还可以使用什么设置?

8cdiaqws

8cdiaqws1#

尝试添加以下内容:

set hive.merge.mapfiles=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
kcwpcxri

kcwpcxri2#

我将@javadba的答案与我从hive邮件列表收到的答案结合起来,下面是解决方案:

set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
set mapred.map.tasks = 20;
select count(*) from dw_stage.st_dw_marketing_touch_pi_metrics_basic;

从邮件列表:
hive似乎正在使用旧的hadoop mapreduce api,因此mapred.max.split.size将无法工作。
稍后我会深入研究源代码。

相关问题