西网站建设公司,网站增值业务,成都网站建设 城,模块化局域网网站建设软件1.with as 的cte优化#xff0c;一般开发中习惯使用with as方便阅读#xff0c;但如果子查询结果在下游被多次引用#xff0c;可以使用一定的参数优化手段减少表扫描次数 默认set hive.optimize.cte.materialize.threshold-1;不自动物化到内存#xff0c;一般可以设置为 se…1.with as 的cte优化一般开发中习惯使用with as方便阅读但如果子查询结果在下游被多次引用可以使用一定的参数优化手段减少表扫描次数 默认set hive.optimize.cte.materialize.threshold-1;不自动物化到内存一般可以设置为 set hive.optimize.cte.materialize.threshold0;开启物化到内存操作但执行时是否开启与3个条件相关 1子查询复杂程度 2下游对子查询的依赖程度 3子查询结果的数据大小
2.join相关优化开启自动翻转join参数并重新设定小表的限定值 set hive.auto.convert.jointrue; set hive.mapjoin.smalltable.filesize50000000; join时候产生了数据倾斜可以使用以下两个参数指定倾斜的字段名称设定分桶数量甚至可以指定倾斜的值 SET hive.skewedjoin.key id; SET hive.skewedjoin.num.buckets 2; set hive.skewedjoin.valuexxx; 例 SELECT * FROM table1 JOIN table2 ON table1.id table2.id;
3.开启向量化查询优化默认不开启开启后可以批量读取数据默认大小是1024条也可以调整为更大 set hive.vectorized.execution.enabled true; set hive.vectorized.execution.reduce.enabled true;
4.设定任务优先级 SET mapreduce.job.priorityVERY_HIGH;
5.hive自动优化参数设置 set hive.stats.autogatherfalse; set hive.stats.column.autogatherfalse; 参数用于控制Hive是否自动收集表和分区的统计信息、是否自动收集列的统计信息。统计信息可以帮助Hive的优化器更好地制定查询计划。 false意味着Hive不会自动收集统计信息。你需要手动运行ANALYZE TABLE命令来收集统计信息。 set hive.cbo.enablefalse; 当 hive.cbo.enable 设置为 false 时意味着Hive将不会使用CBO来优化查询计划。相反Hive将使用一种称为“规则基础的优化器”Rule-Based Optimizer简称RBO的方法来优化查询。RBO依赖于预定义的规则来重写或转换查询而不是基于统计信息和成本评估来选择最佳的执行计划。
6.reduce相关优化参数 set hive.exec.reducers.max9999;一般设置为集群中 Worker 节点数量的 2 到 3 倍。 set hive.exec.reducers.bytes.per.reducer524288000;默认值是256MB
set hive.shuffle.compresstrue;启用shuffle阶段的压缩操作 set hive.map.aggrtrue;聚合函数可以应用于 Map 端减少 Reduce 阶段的数据量和计算量但对于不支持 Map 端聚合的聚合函数需要关闭。
7.时候的一些优化