【发布时间】:2018-11-30 13:41:14
【问题描述】:
我正在 Azure HDInsight LLAP Hive 集群中尝试 Hive 多连接查询。
在运行大约 20 分钟后出现 OutOfMemory 异常。
查询:
create table 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) as frq, 合并(f1.frq_desc,f.frq_desc)作为 frq_desc,f.yr,f.seq, f.fiscal_per_end_date,合并(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,合并(f1.reported_val,f.reported_val)为 报告的_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 加入 imdl_irdp_dev.cur_scrty_sedol_chg_hstry 开启 cm.qad_scrty_cd = s.qad_scrty_cd AND cm.typ = s.typ 左连接 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,item;
突出显示的表有大约 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;
有什么办法可以优化这个查询吗?
【问题讨论】:
标签: azure join hive apache-spark-sql azure-hdinsight