private HybridInstance create(String hybridName, List<RealizationEntry> realizationEntries, String projectName, String owner) throws IOException { checkSegmentOffset(realizationEntries); HybridInstance hybridInstance = HybridInstance.create(kylinConfig, hybridName, realizationEntries); store.checkAndPutResource(hybridInstance.getResourcePath(), hybridInstance, HybridManager.HYBRID_SERIALIZER); ProjectManager.getInstance(kylinConfig).moveRealizationToProject(RealizationType.HYBRID, hybridInstance.getName(), projectName, owner); hybridManager.reloadHybridInstance(hybridName); logger.info("HybridInstance was created at: " + hybridInstance.getResourcePath()); return hybridInstance; }
public IRealization getLatestRealization() { if (getRealizations().length > 0) { return realizations[realizations.length - 1]; } return null; }
@Override public DataModelDesc getModel() { if (this.getLatestRealization() != null) { return this.getLatestRealization().getModel(); } // all included cubes are disabled if (this.getRealizationEntries() != null && this.getRealizationEntries().size() > 0) { String cubeName = this.getRealizationEntries().get(0).getRealization(); CubeInstance cubeInstance = CubeManager.getInstance(config).getCube(cubeName); return cubeInstance.getModel(); } return null; }
public static HybridInstance create(KylinConfig config, String name, List<RealizationEntry> realizationEntries) { HybridInstance hybridInstance = new HybridInstance(); hybridInstance.setConfig(config); hybridInstance.setName(name); hybridInstance.setRealizationEntries(realizationEntries); hybridInstance.updateRandomUuid(); return hybridInstance; }
private void update(HybridInstance hybridInstance, List<RealizationEntry> realizationEntries, String projectName, String owner, boolean checkCubeSize) throws IOException { if (checkCubeSize) checkSegmentOffset(realizationEntries); hybridInstance.setRealizationEntries(realizationEntries); store.checkAndPutResource(hybridInstance.getResourcePath(), hybridInstance, HybridManager.HYBRID_SERIALIZER); ProjectManager.getInstance(kylinConfig).moveRealizationToProject(RealizationType.HYBRID, hybridInstance.getName(), projectName, owner); hybridManager.reloadHybridInstance(hybridInstance.getName()); logger.info("HybridInstance was updated at: " + hybridInstance.getResourcePath()); }
addRequired(HybridInstance.concatResourcePath(hybridInstance.getName())); for (IRealization iRealization : hybridInstance.getRealizations()) { if (iRealization.getType() != RealizationType.CUBE) { throw new RuntimeException("Hybrid " + iRealization.getName() + " contains non cube child "
for (RealizationEntry entry : hybridRealizationEntries) { HybridInstance instance = getHybridManager().getHybridInstance(entry.getRealization()); List<RealizationEntry> cubeRealizationEntries = instance.getRealizationEntries(); cubeNames[i] = cubeRealizationEntries.get(i).getRealization(); hybridService.updateHybridCubeNoCheck(instance.getName(), projectInstance.getName(), cube.getModel().getName(), cubeNames);
private void delete(HybridInstance hybridInstance) throws IOException { ProjectManager.getInstance(kylinConfig).removeRealizationsFromProjects(RealizationType.HYBRID, hybridInstance.getName()); store.deleteResource(hybridInstance.getResourcePath()); hybridManager.reloadAllHybridInstance(); logger.info("HybridInstance was deleted at: " + hybridInstance.getResourcePath()); }
@Test public void testBasics() throws Exception { HybridInstance hybridInstance = getHybridManager().getHybridInstance("test_kylin_hybrid_ready"); System.out.println(JsonUtil.writeValueAsIndentString(hybridInstance)); IRealization[] realizations = hybridInstance.getRealizations(); Assert.assertEquals(realizations.length, 2); IRealization lastReal = hybridInstance.getLatestRealization(); Assert.assertTrue(lastReal instanceof CubeInstance); Assert.assertEquals(lastReal.getName(), "test_kylin_cube_with_slr_ready_2_segments"); }
IRealization realization = registry.getRealization(realizationEntries.get(i).getType(), realizationEntries.get(i).getRealization()); if (realization == null) { logger.error("Realization '" + realizationEntries.get(i) + " is not found, remove from Hybrid '" + this.getName() + "'"); continue; logger.error("Realization '" + realization.getName() + " is disabled, remove from Hybrid '" + this.getName() + "'"); continue; allColumnDescs = asColumnDescs(allColumns); allMeasures = Lists.newArrayList(measures);
@Override public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) throws IOException { if ("hybrid".equals(entity)) { String hybridName = cacheKey; try (AutoLock l = lock.lockForWrite()) { if (event == Event.DROP) hybridMap.removeLocal(hybridName); else crud.reloadQuietly(hybridName); } for (ProjectInstance prj : ProjectManager.getInstance(config).findProjects(RealizationType.HYBRID, hybridName)) { broadcaster.notifyProjectSchemaUpdate(prj.getName()); } } else if ("cube".equals(entity)) { String cubeName = cacheKey; try (AutoLock l = lock.lockForWrite()) { for (HybridInstance hybrid : getHybridInstancesByChild(RealizationType.CUBE, cubeName)) { crud.reloadQuietly(hybrid.getName()); } } } } }
public List<HybridInstance> getHybridInstancesByChild(RealizationType type, String realizationName) { try (AutoLock l = lock.lockForRead()) { List<HybridInstance> result = Lists.newArrayList(); for (HybridInstance hybridInstance : hybridMap.values()) { for (RealizationEntry realizationEntry : hybridInstance.getRealizationEntries()) { if (realizationEntry.getType() == type && realizationEntry.getRealization().equalsIgnoreCase(realizationName)) { result.add(hybridInstance); } } } return result; } }
} else if (olapContext.realization instanceof HybridInstance) { final HybridInstance hybridInstance = (HybridInstance) olapContext.realization; final IRealization latestRealization = hybridInstance.getLatestRealization(); if (latestRealization instanceof CubeInstance) { cube = (CubeInstance) latestRealization;
@Override public String toString() { return getCanonicalName(); }
public String getResourcePath() { return concatResourcePath(name); }
addRequired(HybridInstance.concatResourcePath(hybridInstance.getName())); for (IRealization iRealization : hybridInstance.getRealizations()) { if (iRealization.getType() != RealizationType.CUBE) { throw new RuntimeException("Hybrid " + iRealization.getName() + " contains non cube child "
@Test public void test2Update() throws IOException { HybridManager hybridManager = HybridManager.getInstance(KylinConfig.getInstanceFromEnv()); Assert.assertNull(hybridManager.getHybridInstance("ssb_hybrid")); HybridCubeCLI.main(new String[] { "-name", "ssb_hybrid", "-project", "default", "-model", "ssb", "-cubes", "ssb_cube1,ssb_cube2", "-action", "create" }); HybridInstance hybridInstance = hybridManager.getHybridInstance("ssb_hybrid"); Assert.assertNotNull(hybridManager.getHybridInstance("ssb_hybrid")); Assert.assertEquals("ssb_hybrid", hybridInstance.getName()); Assert.assertEquals(2, hybridInstance.getRealizationEntries().size()); HybridCubeCLI.main(new String[] { "-name", "ssb_hybrid", "-project", "default", "-model", "ssb", "-cubes", "ssb_cube1,ssb_cube2,ssb_cube3", "-action", "update" }); hybridInstance = hybridManager.getHybridInstance("ssb_hybrid"); Assert.assertNotNull(hybridInstance); Assert.assertEquals("ssb_hybrid", hybridInstance.getName()); Assert.assertEquals(3, hybridInstance.getRealizationEntries().size()); }
public static HybridInstance create(KylinConfig config, String name, List<RealizationEntry> realizationEntries) { HybridInstance hybridInstance = new HybridInstance(); hybridInstance.setConfig(config); hybridInstance.setName(name); hybridInstance.setRealizationEntries(realizationEntries); hybridInstance.updateRandomUuid(); return hybridInstance; }
IRealization realization = registry.getRealization(realizationEntries.get(i).getType(), realizationEntries.get(i).getRealization()); if (realization == null) { logger.error("Realization '" + realizationEntries.get(i) + " is not found, remove from Hybrid '" + this.getName() + "'"); continue; logger.error("Realization '" + realization.getName() + " is disabled, remove from Hybrid '" + this.getName() + "'"); continue; allColumnDescs = asColumnDescs(allColumns); allMeasures = Lists.newArrayList(measures);
@Override public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) throws IOException { if ("hybrid".equals(entity)) { String hybridName = cacheKey; try (AutoLock l = lock.lockForWrite()) { if (event == Event.DROP) hybridMap.removeLocal(hybridName); else crud.reloadQuietly(hybridName); } for (ProjectInstance prj : ProjectManager.getInstance(config).findProjects(RealizationType.HYBRID, hybridName)) { broadcaster.notifyProjectSchemaUpdate(prj.getName()); } } else if ("cube".equals(entity)) { String cubeName = cacheKey; try (AutoLock l = lock.lockForWrite()) { for (HybridInstance hybrid : getHybridInstancesByChild(RealizationType.CUBE, cubeName)) { crud.reloadQuietly(hybrid.getName()); } } } } }