首页 > 其他分享 >Hive 的执行优化问题小结

Hive 的执行优化问题小结

时间:2023-07-11 12:00:17浏览次数:32  
标签:join 小结 .... Hive user table 优化 id left


hive 的谓词下推和optimize优化功能的讨论

sql 核心的大概结构为

 

with user_table as (
	select 
		user_id
	from 
		user
)


select 
	t1.user_id
from 
(	
	select
		t1.user_id,
		....
	from 
	(
		select 
			user_id
		from 
			user_1
	) t1 
	left join table_1_1 on ....
	left join table_1_2 on ....
	left join table_1_3 on ....
	
	
	union all 
	
	select
		t1.user_id,
		...

	from 
	(
		select 
			user_id
		from 
			user_2
	) t1 
	left join table_2_1 on ....
	left join table_2_2 on ....
	left join table_2_3 on ....
		
	union all 
	
	select
		t1.user_id,
		...
	from
	(
		select 
			user_id
		from 
			user_3
	) t1 
	left join table_3_1 on ....
	left join table_3_2 on ....
	left join table_3_3 on ....

) t1 
left join (
	select 
		user_id
	from 
		user_table
) t2 on t1.user_id = t2.user_id
where 
	t2.user_id is null 

 


前提背景:
user_1,user_2,user_3,user 都是数据量很大的表


逻辑是需要三个表合并起来的user_id 排除掉 user_table 中的user_id,但是解析完执行计划后,发现 user_table 的逻辑仍然是最后进行join 执行的。
理想情况为应该为识别出子查询的主表,在里面的每个主表做左关联之前,先排除掉 user 中的数据,减少后续多个左连接的shuffle数据。

结论:
猜测hive的谓词下推的优化只要集中在where 条件中,在生成逻辑计划做optimize 时尽可能的使 filterOperator 贴近数据源,提前做数据的裁剪;
但是上面的实际例子中,复杂逻辑sql和 join 的场景下,并没有成功识别出在不影响执行逻辑的情况下的优化,所以hive 的optimize 也是不是完全的智能。
工作中的代码逻辑还是尽可能的优化,需要根据数据量、关联的逻辑,代码侧先完成优化,并结构清晰,不能完全依赖谓词下推、optimize的功能。

 

标签:join,小结,....,Hive,user,table,优化,id,left
From: https://www.cnblogs.com/eric-ln/p/17544263.html

相关文章

  • MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度
    MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度关键词:碳捕集虚拟电厂需求响应优化调度电转气协同调度参考文档:《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》完全复现仿真平台:MATLAB+CPLEX主要内容:代码主要做的是一个计及电转气协同的含碳捕集与......
  • MATLAB代码:基于共享储能电站的工业用户日前优化经济调度
    MATLAB代码:基于共享储能电站的工业用户日前优化经济调度关键词:共享储能储能电站容量优化配置充放电优化日前优化调度参考文档:《基于共享储能电站的工业用户日前优化经济调度》完全复现仿真平台:MATLAB+CPLEX主要内容:代码主要做的是一个共享储能电站的优化调度问题,考虑在工业......
  • MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度
    MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度关键词:用户舒适度综合能源PMV优化调度仿真平台:MATLAB+yalmip+cplex主要内容:代码主要做的是考虑用户舒适度的冷热电多能互补综合能源系统优化调度模型,在传统的冷热电联供型综合能源系统的基础上,进一步考虑了热惯......
  • MATLAB代码:基于分布式优化的多产消者非合作博弈能量共
    MATLAB代码:基于分布式优化的多产消者非合作博弈能量共享关键词:分布式优化产消者非合作博弈能量共享仿真平台:matlab主要内容:为了使光伏用户群内各经济主体能实现有序的电能交易,提出了一种基于光伏电能供需比(SDR)的内部价格模型。在考虑经济性和舒适度的基础上,提出了用户参与需......
  • MATLAB代码:基于主从博弈的产消者/微网群优化定价模型
    MATLAB代码:基于主从博弈的产消者/微网群优化定价模型关键词:主从博弈产消者微网动态定价能量管理仿真平台:matlab主要内容:为了提高用户间光伏电量共享水平,根据用户的用电特性,构建了光伏用户群内的多买方—多卖方格局。结合分布式光伏上网政策,运营商作为主导者,以其收益最大化......
  • MATLAB代码:考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化
    MATLAB代码:考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化关键词:碳交易电制氢阶梯式碳交易综合能源系统热电优化参考文档:《考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化》基本复现仿真平台:MATLAB+CPLEX主要内容:代码主要做的是一个考虑阶梯式碳交易机制的电热......
  • MATLAB代码:微电网两阶段鲁棒优化经济调度程序 关键词:微网优化调度 两阶段鲁棒 CCG算法
    MATLAB代码:微电网两阶段鲁棒优化经济调度程序关键词:微网优化调度两阶段鲁棒CCG算法经济调度参考文档:《微电网两阶段鲁棒优化经济调度方法》仿真平台:MATLABYALMIP+CPLEX优势:代码注释详实,出图效果非常好(具体看图),非目前烂大街版本,请仔细辨识!主要内容:构建了微网两阶段鲁棒调度模......
  • MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化调度 电气热耦
    MATLAB代码:电-气-热综合能源系统耦合优化调度关键词:综合能源系统优化调度电气热耦合仿真平台:MATLABYALMIP+cplex/gurobi主要内容:代码主要做的是一个考虑电网、热网以及气网耦合调度的综合能源系统优化调度模型,考虑了电网与气网,电网与热网的耦合,算例系统中,电网部分为10机39节......
  • MATLAB代码:基于两阶段鲁棒优化算法的多微网联合调度及容量配置
    MATLAB代码:基于两阶段鲁棒优化算法的多微网联合调度及容量配置关键词:多微网优化调度容量配置两阶段鲁棒仿真平台:MATLABYALMIP+CPLEX主要内容:代码主要做的是一个微网在四种典型日场景下各电源容量优化配置以及微网的联合优化调度问题,微网的聚合单元包括风电、光伏、燃气轮机......
  • 主动配电网 优化调度 配电网重构 基于IEEE33节点的配电网重构,采用优化
    主动配电网优化调度配电网重构基于IEEE33节点的配电网重构,采用优化算法建模,得到重构方案,典型日联络开关的操作状态,对比了重构前后的网损和电压结果利用新型算法融合鲸鱼-布谷鸟搜索算法进行了配电网重构计算对比其他几个算法比如粒子群算法布谷鸟算法鲸鱼算法仿真结果表明......