From e9a36b7b3b86d7f545eaa8364f163edfce9a8063 Mon Sep 17 00:00:00 2001 From: kangkaisen Date: Sat, 21 May 2016 15:16:50 +0800 Subject: [PATCH] KYLIN-1695 Skip cardinality calculation job when loading hive table in web --- .../kylin/rest/controller/TableController.java | 7 +++++-- .../kylin/rest/request/HiveTableRequest.java | 22 ++++++++++++++++++++++ webapp/app/js/controllers/sourceMeta.js | 17 ++++++++++++++--- webapp/app/partials/tables/source_table_tree.html | 1 + webapp/app/partials/tables/table_load.html | 2 ++ 5 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 server/src/main/java/org/apache/kylin/rest/request/HiveTableRequest.java 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 b0da2db..a90ab41 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 @@ -34,6 +34,7 @@ import org.apache.kylin.metadata.model.TableDesc; import org.apache.kylin.rest.exception.InternalErrorException; import org.apache.kylin.rest.exception.NotFoundException; import org.apache.kylin.rest.request.CardinalityRequest; +import org.apache.kylin.rest.request.HiveTableRequest; import org.apache.kylin.rest.request.StreamingRequest; import org.apache.kylin.rest.response.TableDescResponse; import org.apache.kylin.rest.service.*; @@ -131,10 +132,12 @@ public class TableController extends BasicController { @RequestMapping(value = "/{tables}/{project}", method = { RequestMethod.POST }) @ResponseBody - public Map loadHiveTable(@PathVariable String tables, @PathVariable String project) throws IOException { + public Map loadHiveTable(@PathVariable String tables, @PathVariable String project, @RequestBody HiveTableRequest request) throws IOException { String submitter = SecurityContextHolder.getContext().getAuthentication().getName(); String[] loaded = cubeMgmtService.reloadHiveTable(tables); - cubeMgmtService.calculateCardinalityIfNotPresent(loaded, submitter); + if (request.isCalculate()) { + cubeMgmtService.calculateCardinalityIfNotPresent(loaded, submitter); + } cubeMgmtService.syncTableToProject(loaded, project); Map result = new HashMap(); result.put("result.loaded", loaded); diff --git a/server/src/main/java/org/apache/kylin/rest/request/HiveTableRequest.java b/server/src/main/java/org/apache/kylin/rest/request/HiveTableRequest.java new file mode 100644 index 0000000..c2beb5f --- /dev/null +++ b/server/src/main/java/org/apache/kylin/rest/request/HiveTableRequest.java @@ -0,0 +1,22 @@ +package org.apache.kylin.rest.request; + +/** + * Created by kangkaisen on 16/5/21. + */ +public class HiveTableRequest { + + public HiveTableRequest(){ + + } + + private boolean calculate = true; + + public boolean isCalculate() { + return calculate; + } + public void setCalculate(boolean calculate) { + this.calculate = calculate; + } + + +} diff --git a/webapp/app/js/controllers/sourceMeta.js b/webapp/app/js/controllers/sourceMeta.js index 606d88a..9de52f4 100755 --- a/webapp/app/js/controllers/sourceMeta.js +++ b/webapp/app/js/controllers/sourceMeta.js @@ -26,7 +26,7 @@ KylinApp $scope.tableModel.selectedSrcTable = {}; $scope.window = 0.68 * $window.innerHeight; $scope.tableConfig = tableConfig; - + $scope.isCalculate = true; $scope.state = { filterAttr: 'id', filterReverse: false, reverseColumn: 'id', @@ -97,6 +97,9 @@ KylinApp projectName: function () { return $scope.projectModel.selectedProject; }, + isCalculate: function () { + return $scope.isCalculate; + }, scope: function () { return $scope; } @@ -119,6 +122,9 @@ KylinApp projectName:function(){ return $scope.projectModel.selectedProject; }, + isCalculate: function () { + return $scope.isCalculate; + }, scope: function () { return $scope; } @@ -142,6 +148,9 @@ KylinApp projectName: function () { return $scope.projectModel.selectedProject; }, + isCalculate: function () { + return $scope.isCalculate; + }, scope: function () { return $scope; } @@ -149,9 +158,11 @@ KylinApp }); }; - var ModalInstanceCtrl = function ($scope, $location, $modalInstance, tableNames, MessageService, projectName, scope,kylinConfig) { + var ModalInstanceCtrl = function ($scope, $location, $modalInstance, tableNames, MessageService, projectName, isCalculate, scope, kylinConfig) { $scope.tableNames = ""; $scope.projectName = projectName; + $scope.isCalculate = isCalculate; + $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; @@ -330,7 +341,7 @@ KylinApp $scope.cancel(); loadingRequest.show(); - TableService.loadHiveTable({tableName: $scope.tableNames, action: projectName}, {}, function (result) { + TableService.loadHiveTable({tableName: $scope.tableNames, action: projectName}, {calculate: $scope.isCalculate}, function (result) { var loadTableInfo = ""; angular.forEach(result['result.loaded'], function (table) { loadTableInfo += "\n" + table; diff --git a/webapp/app/partials/tables/source_table_tree.html b/webapp/app/partials/tables/source_table_tree.html index 8bbaa96..090e726 100755 --- a/webapp/app/partials/tables/source_table_tree.html +++ b/webapp/app/partials/tables/source_table_tree.html @@ -64,6 +64,7 @@ {{node.label}} +