我正在azure hdinsight llap配置单元群集中尝试配置单元多连接查询。
它在运行大约20分钟后发出outofmemory异常。
查询:
创建表tt作为选择,作为选择,作为选择,作为选择,作为选择,作为作为选择,作为作为选择,作为选择,作为作为选择,作为选择,作为选择,作为选择,作为选择,作为选择,作为一个QQD作为作为,作为选择,作为选择,作为选择,作为选择,作为选择,作为选择,作为选择,作为7,f.ws,cd,f.ws,cd,f.ws,f.id,f.cntry,f.cntry,cd,f.cntry,f.cntry,f.cntry名称,f.cntry名称,f.cntry,f.实体名称,f.实体名称,f.实体名称,f.实体名称,f.stmtt,名称,f.stm,名称,f.stm,名称,f.stm,名称,f.stm,f.stm,f.名称,f.作为frq,f.frq,f.frq,f.frq,f.ffff每结束日期的财务报表,合并(f1.erng\u rpt\u date,f.erng\u rpt\u date)为erng\u rpt\u date,f.per\u update\u flg,f.per\u update\u desc,f.per\u srce,f.reported\u curr,合并(f1.reported\u val,f.reported\u val)为reported\u val,f.exch\u rate,f.ws\u curr,从imdl来的f.unit从imdl来的f.unit从imdl来的f.unit从imdl来的f.UIrdp\U.U.U.U.U.U.U.U.U.U.U.unit从imdl来的形式从imdl来的f.unit从imdl来的U.irdp\u irdp\u dev.cur\U std\u std\U基本原理f加入imdl加入imdl加入imdl加入imdl来的irdp\u.U.U W.comp comp mapMapcm上的cm on f.W.W.W.W.U cd=cd=cm.W.W.W.W.W.U.U.U.U从imdl来的形式从imdl来的形式从imdl来的形式从imdl来的imdl来的imdl来的形式从imdl来的形式从imdl来的imdl来的f.U.U.U.以及f1.frq='b'订单,按年份,顺序,类型描述,项目;
突出显示的表有大约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;
有什么方法可以优化这个查询吗?
2条答案
按热度按时间ssgvzors1#
您可以遵循2个最佳实践。引入分区来读取必要的数据,并将文件格式更改为orc,因为您只选择了几列。这将减少数据负载量,并使您的执行速度更快。在cur\u std\u fundamentals上应用筛选器(f1.frq='b')时,记录数是多少。分区取决于数据分布。
您还可以先执行self-join来中断查询,然后查看性能。
你用过压缩空气吗?
6tdlim6h2#
在重新排序联接之后,它工作得很好。
选择“b077c796”作为咨询服务7,f2.ws光盘,f2.cntry名称,f2.实体名称,f2.实体名称,f2.stmt\u子类型描述,f2.stmt\u类型,f2.item,f2.item,f2.item,M,M,coalesce(f3.frq,f2.fq)作为fq,coalesce(f3.frq,f2.frq)作为frq名称,f2.实体名称,f2.实体名称,f2.实体名称,f2.名称,f2.名称,f2.名称,f2.实体名称,f2.实体名称,f2.名称,f2.财税,f2.财税、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政、财政根据更新描述,根据源代码,f2.报告货币,f2.报告货币,聚结(f3.报告货币,f2.报告货币,f2.报告货币)作为报告货币,f2.汇率,f2.汇率,f2.报告货币,f2.单位货币,f2.单位类型,f2.报告货币,f2.报告货币,聚结(f3.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币,f2.报告货币说明、年度、序列、财务报表截止日期,f、 erngu rpt\ u date,f.per\ u update\ u flg,f.per\ u update\ u desc,f.per\ u srce,f.reported\ u curr,f.reported\ u val,f.exch\ u rate,f.ws\ u curr,f.unit\ u typ,f.ws\ val from(select comp\ u map.ws\ u cd from(select qad\ u scrty\ u cd,typ from imdl\ u irdp\ u dev.cur\ u scrty\ u sedol\ u chg\ hstry where given\ u qad\ u sedol in(substr('b07c796',0,6)))chg\ u hstry join(select ws\ u cd,typ,从imdl提供的cd光盘上看,Irdl提供的cd光盘上的cd光盘上的Irdl提供的irdp开发.cur\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\u\r\u\r\u\u\u\u开发.cur\u\u\u comp\u map)comp\uMap上的chg\uMap上的chg\uMap上的chg\u网上网上网上chg\u网上chg\u网上chg\u.qad\u\u\u\u\u\u\u cd\u\u\u cd\u\u\u\u\u cd和cg\u\u\u\u\u cd cd从imcd和chg\u\u\u\u录录录录录录录录从imd cd cd从imd从imd.Idd\u说明,年度,序号,会计截止日期,会计报表日期,每个更新\u flg、每个更新\u desc、每个srce、报告的\u curr、报告的\u val、汇率、ws \u curr、单位类型、来自imdl的ws \u val\u irdp\u dev.cur\u std \u fundamentals \u part,其中2018年和2018年之间的yr和frq='a'和stmt \u typ in('is'、'bs'、'cf'、'other'))f在f.ws \u cd=f1上。ws \u cd)f2左连接(选择frq、frq \u desc、erng \u rpt \u date、报告的\u val、ws \u cd、item、yr,seq来自imdl\u irdp\u dev.cur\u std\u fundamentals\u part,其中yr在2018年和2018年之间,frq='b'和stmt\u typ in('is','bs','cf','other'))f3在f2.ws\u cd=f3.ws\u cd和f2.item=f3.item和f2.yr=f3.yr和f2.seq=f3.seq按f2.yr,f2.seq,f2.item排序;