From b42e7b6b57fa18da400eca133ae9bc5d8dfc5f0c Mon Sep 17 00:00:00 2001 From: "hzfengyu@corp.netease.com" Date: Tue, 8 Dec 2015 19:50:37 +0800 Subject: [PATCH 6/8] git server package part patch, KYLIN-1172 Signed-off-by: hzfengyu@corp.netease.com --- .../org/apache/kylin/rest/controller/CubeController.java | 2 ++ .../org/apache/kylin/rest/controller/ProjectController.java | 13 ++++++++++++- .../org/apache/kylin/rest/controller/TableController.java | 2 ++ .../org/apache/kylin/rest/request/CreateProjectRequest.java | 8 ++++++++ .../java/org/apache/kylin/rest/service/CubeService.java | 2 ++ .../main/java/org/apache/kylin/rest/service/JobService.java | 4 ++++ .../java/org/apache/kylin/rest/service/ProjectService.java | 6 +++++- 7 files changed, 35 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/apache/kylin/rest/controller/CubeController.java b/server/src/main/java/org/apache/kylin/rest/controller/CubeController.java index 8564a59..4887121 100644 --- a/server/src/main/java/org/apache/kylin/rest/controller/CubeController.java +++ b/server/src/main/java/org/apache/kylin/rest/controller/CubeController.java @@ -28,6 +28,7 @@ import java.util.UUID; import org.apache.commons.lang.StringUtils; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.util.HiveManager; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.cube.CubeInstance; import org.apache.kylin.cube.CubeSegment; @@ -194,6 +195,7 @@ public class CubeController extends BasicController { try { String submitter = SecurityContextHolder.getContext().getAuthentication().getName(); CubeInstance cube = jobService.getCubeManager().getCube(cubeName); + HiveManager.getInstance().setCurrentProject(cube.getProjectName()); return jobService.submitJob(cube, jobBuildRequest.getStartTime(), jobBuildRequest.getEndTime(), // CubeBuildTypeEnum.valueOf(jobBuildRequest.getBuildType()), jobBuildRequest.isForceMergeEmptySegment(), submitter); } catch (JobException e) { diff --git a/server/src/main/java/org/apache/kylin/rest/controller/ProjectController.java b/server/src/main/java/org/apache/kylin/rest/controller/ProjectController.java index 5d5e558..69319a5 100644 --- a/server/src/main/java/org/apache/kylin/rest/controller/ProjectController.java +++ b/server/src/main/java/org/apache/kylin/rest/controller/ProjectController.java @@ -60,6 +60,12 @@ public class ProjectController extends BasicController { public List getProjects(@RequestParam(value = "limit", required = false) Integer limit, @RequestParam(value = "offset", required = false) Integer offset) { return projectService.listAllProjects(limit, offset); } + + @RequestMapping(value = "/hives", method = { RequestMethod.GET }) + @ResponseBody + public List getHives() { + return projectService.getAllHiveNames(); + } @RequestMapping(value = "", method = { RequestMethod.POST }) @ResponseBody @@ -67,6 +73,12 @@ public class ProjectController extends BasicController { if (StringUtils.isEmpty(projectRequest.getName())) { throw new InternalErrorException("A project name must be given to create a project"); } + List hiveNames = projectService.getAllHiveNames(); + String hiveName = projectRequest.getHiveName(); + if(hiveName != null && !hiveNames.contains(hiveName)) { + throw new InternalErrorException("A project must specify an valid hive name, available are " + + hiveNames + ", current " + hiveName); + } ProjectInstance createdProj = null; try { @@ -111,5 +123,4 @@ public class ProjectController extends BasicController { public void setProjectService(ProjectService projectService) { this.projectService = projectService; } - } diff --git a/server/src/main/java/org/apache/kylin/rest/controller/TableController.java b/server/src/main/java/org/apache/kylin/rest/controller/TableController.java index 04aa159..822f29f 100644 --- a/server/src/main/java/org/apache/kylin/rest/controller/TableController.java +++ b/server/src/main/java/org/apache/kylin/rest/controller/TableController.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; +import org.apache.kylin.common.util.HiveManager; import org.apache.kylin.metadata.MetadataConstants; import org.apache.kylin.metadata.model.ColumnDesc; import org.apache.kylin.metadata.model.TableDesc; @@ -120,6 +121,7 @@ public class TableController extends BasicController { @ResponseBody public Map loadHiveTable(@PathVariable String tables, @PathVariable String project) throws IOException { String submitter = SecurityContextHolder.getContext().getAuthentication().getName(); + HiveManager.getInstance().setCurrentProject(project); String[] loaded = cubeMgmtService.reloadHiveTable(tables); cubeMgmtService.calculateCardinalityIfNotPresent(loaded, submitter); cubeMgmtService.syncTableToProject(loaded, project); diff --git a/server/src/main/java/org/apache/kylin/rest/request/CreateProjectRequest.java b/server/src/main/java/org/apache/kylin/rest/request/CreateProjectRequest.java index 7c4bfb9..97fa8a5 100644 --- a/server/src/main/java/org/apache/kylin/rest/request/CreateProjectRequest.java +++ b/server/src/main/java/org/apache/kylin/rest/request/CreateProjectRequest.java @@ -24,6 +24,7 @@ package org.apache.kylin.rest.request; public class CreateProjectRequest { private String name; private String description; + private String hiveName; public CreateProjectRequest() { } @@ -44,4 +45,11 @@ public class CreateProjectRequest { this.description = description; } + public String getHiveName() { + return this.hiveName; + } + + public void setHiveName(String hiveName) { + this.hiveName = hiveName; + } } diff --git a/server/src/main/java/org/apache/kylin/rest/service/CubeService.java b/server/src/main/java/org/apache/kylin/rest/service/CubeService.java index c3e6694..1268fce 100644 --- a/server/src/main/java/org/apache/kylin/rest/service/CubeService.java +++ b/server/src/main/java/org/apache/kylin/rest/service/CubeService.java @@ -34,6 +34,7 @@ import org.apache.hadoop.hbase.client.HTable; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.util.HBaseRegionSizeCalculator; import org.apache.kylin.common.util.HadoopUtil; +import org.apache.kylin.common.util.HiveManager; import org.apache.kylin.cube.CubeInstance; import org.apache.kylin.cube.CubeManager; import org.apache.kylin.cube.CubeSegment; @@ -515,6 +516,7 @@ public class CubeService extends BasicService { public CubeInstance rebuildLookupSnapshot(String cubeName, String segmentName, String lookupTable) throws IOException { CubeManager cubeMgr = getCubeManager(); CubeInstance cube = cubeMgr.getCube(cubeName); + HiveManager.getInstance().setCurrentProject(cube.getProjectName()); CubeSegment seg = cube.getSegment(segmentName, SegmentStatusEnum.READY); cubeMgr.buildSnapshotTable(seg, lookupTable); diff --git a/server/src/main/java/org/apache/kylin/rest/service/JobService.java b/server/src/main/java/org/apache/kylin/rest/service/JobService.java index ff61cc3..95884e4 100644 --- a/server/src/main/java/org/apache/kylin/rest/service/JobService.java +++ b/server/src/main/java/org/apache/kylin/rest/service/JobService.java @@ -31,6 +31,7 @@ import org.apache.kylin.cube.CubeInstance; import org.apache.kylin.cube.CubeSegment; import org.apache.kylin.cube.model.CubeBuildTypeEnum; import org.apache.kylin.job.JobInstance; +import org.apache.kylin.job.common.DistcpShellExecutable; import org.apache.kylin.job.common.HadoopShellExecutable; import org.apache.kylin.job.common.MapReduceExecutable; import org.apache.kylin.job.common.ShellExecutable; @@ -256,6 +257,9 @@ public class JobService extends BasicService { if (task instanceof ShellExecutable) { result.setExecCmd(((ShellExecutable) task).getCmd()); } + if(task instanceof DistcpShellExecutable) { + result.setExecCmd(((DistcpShellExecutable) task).getParameters()); + } if (task instanceof MapReduceExecutable) { result.setExecCmd(((MapReduceExecutable) task).getMapReduceParams()); result.setExecWaitTime(AbstractExecutable.getExtraInfoAsLong(stepOutput, MapReduceExecutable.MAP_REDUCE_WAIT_TIME, 0L) / 1000); diff --git a/server/src/main/java/org/apache/kylin/rest/service/ProjectService.java b/server/src/main/java/org/apache/kylin/rest/service/ProjectService.java index 581cabc..32ef343 100644 --- a/server/src/main/java/org/apache/kylin/rest/service/ProjectService.java +++ b/server/src/main/java/org/apache/kylin/rest/service/ProjectService.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.Collections; import java.util.List; +import org.apache.kylin.common.util.HiveManager; import org.apache.kylin.metadata.project.ProjectInstance; import org.apache.kylin.metadata.project.ProjectManager; import org.apache.kylin.rest.constant.Constant; @@ -57,7 +58,7 @@ public class ProjectService extends BasicService { throw new InternalErrorException("The project named " + projectName + " already exists"); } String owner = SecurityContextHolder.getContext().getAuthentication().getName(); - ProjectInstance createdProject = getProjectManager().createProject(projectName, owner, description); + ProjectInstance createdProject = getProjectManager().createProject(projectName, owner, description, projectRequest.getHiveName()); accessService.init(createdProject, AclPermission.ADMINISTRATION); logger.debug("New project created."); @@ -116,4 +117,7 @@ public class ProjectService extends BasicService { ProjectManager.clearCache(); } + public List getAllHiveNames() { + return HiveManager.getInstance().getAllHiveName(); + } } -- 1.9.4.msysgit.2