From 0ce3e45d86f1ba9af7b212734eed07b861b294c4 Mon Sep 17 00:00:00 2001 From: terry Date: Tue, 8 Dec 2015 22:10:06 +0800 Subject: [PATCH 7/8] dictionary package part patch,KYLIN-1172 Signed-off-by: terry --- .../java/org/apache/kylin/dict/DictionaryManager.java | 14 +++++++++++++- .../main/java/org/apache/kylin/dict/lookup/HiveTable.java | 15 ++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java index 61e8e74..cb0b465 100644 --- a/dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java +++ b/dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java @@ -38,6 +38,7 @@ import org.apache.hadoop.fs.Path; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.persistence.ResourceStore; import org.apache.kylin.common.util.HadoopUtil; +import org.apache.kylin.common.util.HiveManager; import org.apache.kylin.dict.lookup.FileTable; import org.apache.kylin.dict.lookup.HiveTable; import org.apache.kylin.dict.lookup.ReadableTable; @@ -45,6 +46,8 @@ import org.apache.kylin.dict.lookup.ReadableTable.TableSignature; import org.apache.kylin.metadata.MetadataManager; import org.apache.kylin.metadata.model.DataModelDesc; import org.apache.kylin.metadata.model.TblColRef; +import org.apache.kylin.metadata.project.ProjectInstance; +import org.apache.kylin.metadata.project.ProjectManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -262,7 +265,16 @@ public class DictionaryManager { if (model.isFactTable(col.getTable())) { table = new FileTable(factColumnsPath + "/" + col.getName(), -1); } else { - table = new HiveTable(metaMgr, col.getTable()); + KylinConfig config = KylinConfig.getInstanceFromEnv(); + String projectName = HiveManager.getInstance().getCurrentProject(); + String hiveName = null; + if(projectName != null) { + ProjectInstance projectInstance = ProjectManager.getInstance(config).getProject(projectName); + if(projectInstance != null) + hiveName = projectInstance.getHiveName(); + } + + table = new HiveTable(metaMgr, col.getTable(), HiveManager.getInstance().createHiveClient(hiveName)); } } // otherwise could refer to a data set, e.g. common_indicators.txt diff --git a/dictionary/src/main/java/org/apache/kylin/dict/lookup/HiveTable.java b/dictionary/src/main/java/org/apache/kylin/dict/lookup/HiveTable.java index 1b8a6bb..03f3111 100644 --- a/dictionary/src/main/java/org/apache/kylin/dict/lookup/HiveTable.java +++ b/dictionary/src/main/java/org/apache/kylin/dict/lookup/HiveTable.java @@ -25,6 +25,8 @@ import org.apache.kylin.common.util.HiveClient; import org.apache.kylin.common.util.Pair; import org.apache.kylin.metadata.MetadataManager; import org.apache.kylin.metadata.model.TableDesc; +import org.apache.kylin.common.util.HiveManager; +import org.apache.kylin.metadata.project.ProjectManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,15 +41,16 @@ public class HiveTable implements ReadableTable { private HiveClient hiveClient; - public HiveTable(MetadataManager metaMgr, String table) { + public HiveTable(MetadataManager metaMgr, String table, HiveClient hiveClient) { TableDesc tableDesc = metaMgr.getTableDesc(table); this.database = tableDesc.getDatabase(); this.hiveTable = tableDesc.getName(); + this.hiveClient = hiveClient; } @Override - public TableReader getReader() throws IOException { - return new HiveTableReader(database, hiveTable); + public HiveTable(MetadataManager metaMgr, String table) { + this(metaMgr, table, null); } @Override @@ -94,9 +97,11 @@ public class HiveTable implements ReadableTable { return "hive: database=[" + database + "], table=[" + hiveTable + "]"; } - public HiveClient getHiveClient() { + public HiveClient getHiveClient() throws IOException { if (hiveClient == null) { - hiveClient = new HiveClient(); + //create hiveClient with current thread project name. + String hiveName = ProjectManager.getInstance(KylinConfig.getInstanceFromEnv()).getProject(HiveManager.getInstance().getCurrentProject()).getHiveName(); + hiveClient = HiveManager.getInstance().createHiveClient(hiveName); } return hiveClient; } -- 1.9.4.msysgit.2