我正在 Azure HDInsight LLAP Hive 群集中尝试配置单元多连接查询。
它在运行大约 20 分钟后给出OutOfMemory异常。
询问:
创建表 tt as SELECT given_qad_sedol as Sedol7, f.ws_cd, f.ws_id, f.cntry_cd, f.cntry_name, f.entity_name, f.stmt_sub_typ, f.stmt_sub_typ_desc, f.stmt_typ, f.stmt_typ_desc, f.item, f .item_name,f.short_mnem,f.item_mnem,coalesce(f1.frq,f.frq) 作为 frq,coalesce(f1.frq_desc,f.frq_desc) 作为 frq_desc,f.yr,f.seq,f.fiscal_per_end_date,coalesce (f1.erng_rpt_date,f.erng_rpt_date)作为erng_rpt_date,f.per_update_flg,f.per_update_desc,f.per_srce,f.reported_curr,coalesce(f1.reported_val,f.reported_val)作为reported_val,f.exch_rate,f.ws_curr,f .unit_typ FROM imdl_irdp_dev.cur_std_fundamentals f JOIN imdl_irdp_dev.cur_ws_comp_map cm ON f.ws_cd = cm.ws_cd JOIN imdl_irdp_dev.cur_scrty_sedol_chg_hstry s ON cm.qad_scrty_cd = s.qad_scrty_cd AND cm.typ = s.typ LE imdl_irdp_dev.cur_std_fundamentals f1 ON f.ws_cd = f1.ws_cd AND f.item = f1.item AND f.yr = f1.yr AND f.seq = f1.seq AND f1.frq = 'B' ORDER BY yr,seq, stmt_typ_desc,项目;
突出显示的表有大约 15 亿条记录。我们无法更改查询,因为它是业务需求。但是我们可以优化它,前提是查询结果不应该改变。
我也尝试了以下选项,但仍然没有运气。
set mapreduce.map.memory.mb=8000;
set mapreduce.map.java.opts=-Xmx46080m;
set mapreduce.reduce.memory.mb=8000;
set mapreduce.reduce.java.opts=-Xmx7000m;
set hive.tez.container.size=8000;
set hive.tez.java.opts=-Xmx7000m;
set hive.auto.convert.join.noconditionaltask.size=1000000000;
set set dfs.blocksize=1073741824;
有什么办法可以优化这个查询吗?