From 104e9d29030dff82cef8c66ae47ca7a1859be150 Mon Sep 17 00:00:00 2001 From: anllick <654610542@qq.com> Date: Wed, 6 Nov 2024 17:29:23 +0800 Subject: [PATCH] add enhanced config --- omnioperator/omniop-hive-extension/pom.xml | 12 +++++----- .../hive/OmniExecuteWithHookContext.java | 24 ++++++++++++++++++- .../huawei/boostkit/hive/OmniHiveConf.java | 4 ++++ 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/omnioperator/omniop-hive-extension/pom.xml b/omnioperator/omniop-hive-extension/pom.xml index 1050d4a1b..165973879 100644 --- a/omnioperator/omniop-hive-extension/pom.xml +++ b/omnioperator/omniop-hive-extension/pom.xml @@ -180,16 +180,16 @@ 3.0.0 provided - - junit - junit - 4.13.1 - test - org.apache.hive hive-cli 3.1.0 + provided + + + junit + junit + 4.13.1 test diff --git a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniExecuteWithHookContext.java b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniExecuteWithHookContext.java index 9ae9a50dd..291bb5321 100644 --- a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniExecuteWithHookContext.java +++ b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniExecuteWithHookContext.java @@ -51,6 +51,7 @@ import com.huawei.boostkit.hive.shuffle.OmniVecBatchSerDe; import nova.hetu.omniruntime.constants.FunctionType; +import org.apache.hadoop.hive.cli.CliSessionState; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.QueryPlan; @@ -104,6 +105,7 @@ import org.apache.hadoop.hive.ql.plan.ptf.BoundaryDef; import org.apache.hadoop.hive.ql.plan.ptf.PTFExpressionDef; import org.apache.hadoop.hive.ql.plan.ptf.WindowFunctionDef; import org.apache.hadoop.hive.ql.plan.ptf.WindowTableFunctionDef; +import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFCoalesce; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFConcat; @@ -192,7 +194,8 @@ public class OmniExecuteWithHookContext implements ExecuteWithHookContext { public void run(HookContext hookContext) throws Exception { this.hookContext = hookContext; - omniHiveConf = new OmniHiveConf(hookContext.getConf()); + HiveConf hookContextConf = hookContext.getConf(); + omniHiveConf = new OmniHiveConf(hookContextConf); stringLength = omniHiveConf.stringLength; clearGlobalVar(); QueryPlan queryPlan = hookContext.getQueryPlan(); @@ -214,6 +217,25 @@ public class OmniExecuteWithHookContext implements ExecuteWithHookContext { if (tezWork == null || checkDataType()) { return; } + SessionState sessionState = SessionState.get(); + String fileName = null; + if (sessionState instanceof CliSessionState) { + fileName = ((CliSessionState) sessionState).fileName; + } + String[] enhancedSqls = omniHiveConf.enhancedSqls; + if (enhancedSqls != null && fileName != null) { + long containerSize = omniHiveConf.enhancedSize != 0 ? omniHiveConf.enhancedSize + : (long) (1.5 * hookContextConf.getLong("hive.tez.container.size", 0)); + for (String enhancedSql : omniHiveConf.enhancedSqls) { + if (fileName.contains(enhancedSql)) { + hookContextConf.setLong("hive.tez.container.size", containerSize); + hookContextConf.setLong("tez.am.resource.memory.mb", containerSize); + hookContextConf.setLong("tez.task.resource.memory.mb", containerSize); + break; + } + } + + } if (OMNI_OPERATOR.contains(OperatorType.REDUCESINK)) { initMapJoinOpToWork(); initReduceSinkReplaceable(); diff --git a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniHiveConf.java b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniHiveConf.java index 1f3ee070d..0b9905b40 100644 --- a/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniHiveConf.java +++ b/omnioperator/omniop-hive-extension/src/main/java/com/huawei/boostkit/hive/OmniHiveConf.java @@ -39,6 +39,8 @@ class OmniHiveConf { public boolean enableAdaptivePartialAggregation; public long adaptivePartialAggregationMinRows; public double adaptivePartialAggregationRatio; + public String[] enhancedSqls; + public long enhancedSize; public OmniHiveConf(HiveConf hiveConf) { enableOperatorJoin = hiveConf.getBoolean("omni.hive.join.enabled", true); @@ -66,6 +68,8 @@ class OmniHiveConf { enableAdaptivePartialAggregation = hiveConf.getBoolean("omni.hive.adaptivePartialAggregation.enabled", false); adaptivePartialAggregationMinRows = hiveConf.getLong("omni.hive.adaptivePartialAggregationMinRows", 500000); adaptivePartialAggregationRatio = hiveConf.getDouble("omni.hive.adaptivePartialAggregationRatio", 0.8); + enhancedSqls = hiveConf.getStrings("omni.hive.enhanced.sqls"); + enhancedSize = hiveConf.getLong("omni.hive.enhanced.size", 0); } public boolean isEnableOperator(OperatorType operatorType) { -- Gitee