Hive流查询中设置减数的数量

2024-05-19 23:02:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,设置数量的减少流作业。在

查询如下所示:

set mapred.job.name = 'Job name';
set mapred.reduce.tasks=128;
FROM (
  FROM (
    SELECT id, record, day
    FROM table_X TABLESAMPLE (BUCKET 1 OUT OF 4 ON id) 
    WHERE DAY='2015-08-27'
    CLUSTER BY(id)
  ) temp_table
  REDUCE *
  USING 'python script.py' AS id, decision
) t
INSERT OVERWRITE TABLE table_Y
  SELECT *;

我想使用python脚本减少表_X中的记录。这是一项计算密集型的任务,而且由还原器对记录进行聚类也是至关重要的。在

问题是我不能通过设置大量减速器来平衡负载。在

^{pr2}$

根本不起作用,它给了我128个减速器,但最后还有1个减速器,工作效率为99.9%,而且工作时间很长(我猜所有的工作流通过脚本都留给这个减速机)

set hive.exec.reducers.bytes.per.reducer:

有点帮助,但我不能很好地平衡负载。它仍然给了我大约100个简化程序,但最后有20-30个简化程序通过脚本进行流式处理。顺便说一句,有人能澄清一下:如果我把它设为1000000字节=1Mb,我们会谈论压缩卷吗?这个参数有多小?在

你还可以推荐什么来设置减速器的最小数量?在


Tags: namefrom程序脚本id数量作业记录