@Override public List<String> getDimTableStorages(LensSessionHandle sessionid, String dimension) throws LensException { try (SessionContext ignored = new SessionContext(sessionid)){ CubeDimensionTable dimTable = getClient(sessionid).getDimensionTable(dimension); return new ArrayList<>(dimTable.getStorages()); } }
@Override public void dropAllStoragesOfDimTable(LensSessionHandle sessionid, String dimTblName) throws LensException { try (SessionContext ignored = new SessionContext(sessionid)){ CubeMetastoreClient msClient = getClient(sessionid); CubeDimensionTable tab = msClient.getDimensionTable(dimTblName); int total = tab.getStorages().size(); int i = 0; List<String> storageNames = new ArrayList<>(tab.getStorages()); for (String s : storageNames) { msClient.dropStorageFromDim(dimTblName, s); log.info("Dropped storage " + s + " from dimension table " + dimTblName + " [" + ++i + "/" + total + "]"); } log.info("Dropped " + total + " storages from dimension table " + dimTblName); } catch (HiveException exc) { throw new LensException(exc); } }
/** * Drop the dimension table * * @param dimTblName dim table name * @param cascade If true, will drop all the dimension storages * @throws HiveException */ public void dropDimensionTable(String dimTblName, boolean cascade) throws LensException { getTableWithTypeFailFast(dimTblName, CubeTableType.DIM_TABLE); CubeDimensionTable dim = getDimensionTable(dimTblName); if (cascade) { for (String storage : dim.getStorages()) { dropStorageFromDim(dimTblName, storage, false); } } dropHiveTable(dimTblName); allDimTables.remove(dimTblName.trim().toLowerCase()); }
allDimTables.put(tableName, dimTable); if (!dimTable.getStorages().isEmpty()) { for (String storageName : dimTable.getStorages()) { if (dimTable.hasStorageSnapshots(storageName)) { String storageTableName = getFactOrDimtableStorageTableName(dimTable.getName(),
allDimTables.put(tableName, dimTable); if (!dimTable.getStorages().isEmpty()) { for (String storageName : dimTable.getStorages()) { if (dimTable.hasStorageSnapshots(storageName)) { String storageTableName = getFactOrDimtableStorageTableName(dimTable.getName(),
/** * Drop the dimension table * * @param dimTblName dim table name * @param cascade If true, will drop all the dimension storages * @throws HiveException */ public void dropDimensionTable(String dimTblName, boolean cascade) throws LensException { checkIfAuthorized(); getTableWithTypeFailFast(dimTblName, CubeTableType.DIM_TABLE); CubeDimensionTable dim = getDimensionTable(dimTblName); if (cascade) { for (String storage : dim.getStorages()) { dropStorageFromDim(dimTblName, storage, false); } } dropHiveTable(dimTblName); allDimTables.remove(dimTblName.trim().toLowerCase()); }
@Override public void dropStorageOfDimTable(LensSessionHandle sessionid, String dimTblName, String storage) throws LensException { try (SessionContext ignored = new SessionContext(sessionid)){ CubeMetastoreClient msClient = getClient(sessionid); CubeDimensionTable tab = msClient.getDimensionTable(dimTblName); if (!tab.getStorages().contains(storage)) { throw new NotFoundException("Storage " + storage + " not found for dimension " + dimTblName); } msClient.dropStorageFromDim(dimTblName, storage); log.info("Dropped storage " + storage + " from dimension table " + dimTblName); } catch (HiveException exc) { throw new LensException(exc); } }
public XDimensionTable getXDimensionTable(CubeDimensionTable dimTable) throws LensException { XDimensionTable dt = JAXBUtils.dimTableFromCubeDimTable(dimTable); if (!dimTable.getStorages().isEmpty()) { for (String storageName : dimTable.getStorages()) { XStorageTableElement tblElement = JAXBUtils.getXStorageTableFromHiveTable( this.getHiveTable(MetastoreUtil.getFactOrDimtableStorageTableName(dimTable.getName(), storageName))); tblElement.setStorageName(storageName); UpdatePeriod p = dimTable.getSnapshotDumpPeriods().get(storageName); if (p != null) { tblElement.getUpdatePeriods().getUpdatePeriod().add(XUpdatePeriod.valueOf(p.name())); } dt.getStorageTables().getStorageTable().add(tblElement); } } return dt; }
public XDimensionTable getXDimensionTable(CubeDimensionTable dimTable) throws LensException { XDimensionTable dt = JAXBUtils.dimTableFromCubeDimTable(dimTable); if (!dimTable.getStorages().isEmpty()) { for (String storageName : dimTable.getStorages()) { XStorageTableElement tblElement = JAXBUtils.getXStorageTableFromHiveTable( this.getHiveTable(MetastoreUtil.getFactOrDimtableStorageTableName(dimTable.getName(), storageName))); tblElement.setStorageName(storageName); UpdatePeriod p = dimTable.getSnapshotDumpPeriods().get(storageName); if (p != null) { tblElement.getUpdatePeriods().getUpdatePeriod().add(XUpdatePeriod.valueOf(p.name())); } dt.getStorageTables().getStorageTable().add(tblElement); } } return dt; } /**
CandidateDim candidate = i.next(); CubeDimensionTable dimtable = candidate.dimtable; if (dimtable.getStorages().isEmpty()) { cubeql .addDimPruningMsgs(dim, dimtable, new CandidateTablePruneCause(CandidateTablePruneCode.MISSING_STORAGES)); for (String storage : dimtable.getStorages()) { if (isStorageSupportedOnDriver(storage)) { String tableName = MetastoreUtil.getFactOrDimtableStorageTableName(dimtable.getName(),
CandidateDim candidate = i.next(); CubeDimensionTable dimtable = candidate.dimtable; if (dimtable.getStorages().isEmpty()) { cubeql .addDimPruningMsgs(dim, dimtable, new CandidateTablePruneCause(CandidateTablePruneCode.MISSING_STORAGES)); for (String storage : dimtable.getStorages()) { if (isStorageSupportedOnDriver(storage)) { String tableName = MetastoreUtil.getFactOrDimtableStorageTableName(dimtable.getName(),
XDimensionTable dimTable = dt.getValue(); CubeDimensionTable cdim = JAXBUtils.cubeDimTableFromDimTable(dimTable); assertTrue(cdim.getStorages().isEmpty()); assertTrue(cdim.getSnapshotDumpPeriods().isEmpty()); } finally {
XDimensionTable dimTable = dt.getValue(); CubeDimensionTable cdim = JAXBUtils.cubeDimTableFromDimTable(dimTable); assertTrue(cdim.getStorages().contains("test")); assertTrue(cdim.getStorages().contains("test2")); assertEquals(cdim.getSnapshotDumpPeriods().get("test2"), DAILY); assertEquals(cdim.getSnapshotDumpPeriods().get("test"), HOURLY); dimTable = dt.getValue(); cdim = JAXBUtils.cubeDimTableFromDimTable(dimTable); assertFalse(cdim.getStorages().contains("test")); assertTrue(cdim.getStorages().contains("test2")); assertEquals(cdim.getSnapshotDumpPeriods().get("test2"), DAILY); dimTable = dt.getValue(); cdim = JAXBUtils.cubeDimTableFromDimTable(dimTable); assertTrue(cdim.getStorages().contains("test2")); assertTrue(cdim.getStorages().contains("test3")); assertNull(cdim.getSnapshotDumpPeriods().get("test3")); } finally {
Table c4Table = client.getTable(c4TableName); assertEquals(c4Table.getInputFormatClass(), SequenceFileInputFormat.class); assertTrue(altered2.getStorages().contains("C4")); assertFalse(altered2.hasStorageSnapshots("C4"));