private static Set<Table> tablesFromReadEntities(Set<ReadEntity> readEntities) { return readEntities.stream() .filter(entity -> entity.getType() == Entity.Type.TABLE) .map(entity -> entity.getTable()) .collect(Collectors.toSet()); }
public Stream<String> getTableNames() { return queryInfo.getInputs().stream() .filter(readEntity -> readEntity.getType() == Type.TABLE) .map(readEntity -> readEntity.getTable().getFullyQualifiedName()); } }
private void putAccessedColumnsToReadEntity(HashSet<ReadEntity> inputs, ColumnAccessInfo columnAccessInfo) { Map<String, List<String>> tableToColumnAccessMap = columnAccessInfo.getTableToColumnAccessMap(); if (tableToColumnAccessMap != null && !tableToColumnAccessMap.isEmpty()) { for(ReadEntity entity: inputs) { List<String> cols; switch (entity.getType()) { case TABLE: cols = tableToColumnAccessMap.get(entity.getTable().getCompleteName()); if (cols != null && !cols.isEmpty()) { entity.getAccessedColumns().addAll(cols); } break; case PARTITION: cols = tableToColumnAccessMap.get(entity.getPartition().getTable().getCompleteName()); if (cols != null && !cols.isEmpty()) { entity.getAccessedColumns().addAll(cols); } break; default: // no-op } } } }
switch (input.getType()) { case TABLE: Table table = input.getTable(); JSONObject tableInfo = new JSONObject(); tableInfo.put("tablename", table.getCompleteName());
private void putAccessedColumnsToReadEntity(HashSet<ReadEntity> inputs, ColumnAccessInfo columnAccessInfo) { Map<String, List<String>> tableToColumnAccessMap = columnAccessInfo.getTableToColumnAccessMap(); if (tableToColumnAccessMap != null && !tableToColumnAccessMap.isEmpty()) { for(ReadEntity entity: inputs) { List<String> cols; switch (entity.getType()) { case TABLE: cols = tableToColumnAccessMap.get(entity.getTable().getCompleteName()); if (cols != null && !cols.isEmpty()) { entity.getAccessedColumns().addAll(cols); } break; case PARTITION: cols = tableToColumnAccessMap.get(entity.getPartition().getTable().getCompleteName()); if (cols != null && !cols.isEmpty()) { entity.getAccessedColumns().addAll(cols); } break; default: // no-op } } } }
switch (input.getType()) { case TABLE: Table table = input.getTable(); JSONObject tableInfo = new JSONObject(); tableInfo.put("tablename", table.getCompleteName());
@Test public void testGetJSONDependenciesJsonShhouldMatch() throws Exception { ExplainWork work = mockExplainWork(); when(work.getDependency()).thenReturn(true); // Mock inputs HashSet<ReadEntity> inputs = new HashSet<>(); // One input table Table table = mock(Table.class); when(table.getCompleteName()).thenReturn("table-name-mock"); when(table.getTableType()).thenReturn(TableType.EXTERNAL_TABLE); ReadEntity input1 = mock(ReadEntity.class); when(input1.getType()).thenReturn(Entity.Type.TABLE); when(input1.getTable()).thenReturn(table); inputs.add(input1); // And one partition Partition partition = mock(Partition.class); when(partition.getCompleteName()).thenReturn("partition-name-mock"); ReadEntity input2 = mock(ReadEntity.class); when(input2.getType()).thenReturn(Entity.Type.PARTITION); when(input2.getPartition()).thenReturn(partition); inputs.add(input2); when(work.getInputs()).thenReturn(inputs); JsonNode result = objectMapper.readTree(ExplainTask.getJSONDependencies(work).toString()); JsonNode expected = objectMapper.readTree("{\"input_partitions\":[{\"partitionName\":" + "\"partition-name-mock\"}],\"input_tables\":[{\"tablename\":\"table-name-mock\"," + "\"tabletype\":\"EXTERNAL_TABLE\"}]}"); assertEquals(expected, result); }
Table tableUsed = readEntity.getTable(); Map<String, Table> tempTables = SessionHiveMetaStoreClient.getTempTablesForDatabase(tableUsed.getDbName(), tableUsed.getTableName());
String dbName = re.getTable().getDbName(); String tblName = re.getTable().getTableName(); Table t = db.getTable(dbName, tblName); t.setLastAccessTime(lastAccessTime); String dbName = re.getTable().getDbName(); String tblName = re.getTable().getTableName(); Partition p = re.getPartition(); Table t = db.getTable(dbName, tblName);
private Map<String, List<String>> getColsFromReadEntity(HashSet<ReadEntity> inputs) { Map<String, List<String>> tableColsMap = new HashMap<String, List<String>>(); for(ReadEntity entity: inputs) { switch (entity.getType()) { case TABLE: if (entity.getAccessedColumns() != null && !entity.getAccessedColumns().isEmpty()) { tableColsMap.put(entity.getTable().getCompleteName(), entity.getAccessedColumns()); } break; case PARTITION: if (entity.getAccessedColumns() != null && !entity.getAccessedColumns().isEmpty()) { tableColsMap.put(entity.getPartition().getTable().getCompleteName(), entity.getAccessedColumns()); } break; default: // no-op } } return tableColsMap; }
null, HiveLockMode.SHARED)); } else if (input.getType() == ReadEntity.Type.TABLE) { lockObjects.addAll(getLockObjects(plan, null, input.getTable(), null, HiveLockMode.SHARED)); } else {
null, HiveLockMode.SHARED)); } else if (input.getType() == ReadEntity.Type.TABLE) { lockObjects.addAll(getLockObjects(plan, null, input.getTable(), null, HiveLockMode.SHARED)); } else {
Table tbl = readEntity.getTable(); Partition p = readEntity.getPartition();
Table tbl = readEntity.getTable(); Partition p = readEntity.getPartition();
Table t = db.getTable(re.getTable().getTableName()); t.setLastAccessTime(lastAccessTime); db.alterTable(t.getDbName() + "." + t.getTableName(), t, null);
t = input.getTable(); compBuilder.setDbName(t.getDbName()); compBuilder.setTableName(t.getTableName());
private void putAccessedColumnsToReadEntity(HashSet<ReadEntity> inputs, ColumnAccessInfo columnAccessInfo) { Map<String, List<String>> tableToColumnAccessMap = columnAccessInfo.getTableToColumnAccessMap(); if (tableToColumnAccessMap != null && !tableToColumnAccessMap.isEmpty()) { for(ReadEntity entity: inputs) { List<String> cols; switch (entity.getType()) { case TABLE: cols = tableToColumnAccessMap.get(entity.getTable().getCompleteName()); if (cols != null && !cols.isEmpty()) { entity.getAccessedColumns().addAll(cols); } break; case PARTITION: cols = tableToColumnAccessMap.get(entity.getPartition().getTable().getCompleteName()); if (cols != null && !cols.isEmpty()) { entity.getAccessedColumns().addAll(cols); } break; default: // no-op } } } }