当我运行这个sql时,大约需要半个小时,这是不可接受的。 源表有20M记录。
每个rank()创建一个运行7分钟的mapreduce作业,其中所有数据都在一个reduce中。如何优化这个sql?这些排名mapreduce可以并行运行吗?
create table tmp.xxxx as
SELECT t.end_user_id,
t.pm_net_amt,
t.parnt_ordr_num,
rank() over(order by t.pm_net_amt) pm_net_amt_rank,
rank() over(order by t.parnt_ordr_num) parnt_ordr_num_rank,
rank() over(order by t.cat_lvl3_num) cat_lvl3_num_rank,
rank() over(order by t.discount_rate) discount_rate_rank
from bi_tmp.bbbbbb t;
答案 0 :(得分:0)
来自How to make hive run mapreduce jobs concurrently?:
在hive-default.xml中,有一个名为" hive.exec.parallel"的属性。 这可以并行执行作业。默认值为 "假&#34 ;.您可以将其更改为" true"获得这种能力。您可以 使用另一个属性" hive.exec.parallel.thread.number"控制如何 最多的工作可以并行执行。
这可能导致每个等级并行运行,但我还没有测试过。