@Override public List<String> listPartitionNames(String dbName, String tblName, short max) throws NoSuchObjectException, MetaException, TException { return listPartitionNames(getDefaultCatalog(conf), dbName, tblName, max); }
@Override public List<String> listPartitionNames(String db_name, String tbl_name, List<String> part_vals, short max_parts) throws TException { return listPartitionNames(getDefaultCatalog(conf), db_name, tbl_name, part_vals, max_parts); }
/** * Returns a list of partition names, i.e. "p=1/q=2" type strings. The values (RHS of =) are * escaped. */ @Override public List<String> listPartitionNames(String dbName, String tableName, short maxParts) throws TException { org.apache.hadoop.hive.metastore.api.Table table = getTempTable(dbName, tableName); if (table == null) { //(assume) not a temp table - Try underlying client return super.listPartitionNames(dbName, tableName, maxParts); } TempTable tt = getTempTable(table); if(tt == null) { throw new IllegalStateException("TempTable not found for " + Warehouse.getQualifiedName(table)); } List<String> partVals = new ArrayList<>(); partVals.add(""); //to get all partitions List<Partition> parts = tt.getPartitions(partVals); List<String> matchedParts = new ArrayList<>(); for(int i = 0; i < (maxParts <= 0 ? parts.size() : maxParts); i++) { matchedParts.add( Warehouse.makePartName(tt.tTable.getPartitionKeys(), parts.get(i).getValues())); } return matchedParts; }
private void runGetPartitionsUsingNames() throws TException { List<String> names = client.listPartitionNames(dbName, tblName, (short) -1); // remove one to make sure that the test is really looking at 3 names names.remove(names.size() - 1); getPartitionsWithNames(names, 3); // filter mode is set. Empty filter names. So no partitions should be returned getPartitionsWithNames(Arrays.asList(""), 0); // invalid name getPartitionsWithNames(Arrays.asList("invalidPartitionName"), 0); }
@Test public void testPartitionPublish() throws Exception { String dbName = "default"; String tableName = "testHCatPartitionedTable"; createTable(null, tableName); Map<String, String> partitionMap = new HashMap<String, String>(); partitionMap.put("part1", "p1value1"); partitionMap.put("part0", "p0value1"); ArrayList<HCatFieldSchema> hcatTableColumns = new ArrayList<HCatFieldSchema>(); for (FieldSchema fs : getTableColumns()) { hcatTableColumns.add(HCatSchemaUtils.getHCatFieldSchema(fs)); } runMRCreateFail(dbName, tableName, partitionMap, hcatTableColumns); List<String> ptns = msc.listPartitionNames(dbName, tableName, (short) 10); Assert.assertEquals(0, ptns.size()); Table table = msc.getTable(dbName, tableName); Assert.assertTrue(table != null); Path path = new Path(table.getSd().getLocation() + "/part1=p1value1/part0=p0value1"); Assert.assertFalse(path.getFileSystem(conf).exists(path)); }
@Test public void testListPartitionNames() throws Throwable { // create a table with multiple partitions String dbName = "compdb"; String tblName = "comptbl"; String typeName = "Person"; cleanUp(dbName, tblName, typeName); List<List<String>> values = new ArrayList<>(); values.add(makeVals("2008-07-01 14:13:12", "14")); values.add(makeVals("2008-07-01 14:13:12", "15")); values.add(makeVals("2008-07-02 14:13:12", "15")); values.add(makeVals("2008-07-03 14:13:12", "151")); createMultiPartitionTableSchema(dbName, tblName, typeName, values); List<String> partitions = client.listPartitionNames(dbName, tblName, (short)-1); assertNotNull("should have returned partitions", partitions); assertEquals(" should have returned " + values.size() + " partitions", values.size(), partitions.size()); partitions = client.listPartitionNames(dbName, tblName, (short)(values.size()/2)); assertNotNull("should have returned partitions", partitions); assertEquals(" should have returned " + values.size() / 2 + " partitions",values.size() / 2, partitions.size()); partitions = client.listPartitionNames(dbName, tblName, (short) (values.size() * 2)); assertNotNull("should have returned partitions", partitions); assertEquals(" should have returned " + values.size() + " partitions",values.size(), partitions.size()); cleanUp(dbName, tblName, typeName); }
List<String> partNames = hms.listPartitionNames(dbName, tableName, Short.MAX_VALUE);
colNames.add("name"); colNames.add("income"); List<String> partNames = client.listPartitionNames(dbName,tblName,(short)-1);
partNames.add(partName); partNames.add(part2Name); List<String> partialNames = client.listPartitionNames(dbName, tblName, partialVals, (short) -1); assertTrue("Should have returned 2 partition names", partialNames.size() == 2); partialVals.clear(); partialVals.add(""); partialNames = client.listPartitionNames(dbName, tblName, partialVals, (short) -1); assertTrue("Should have returned 5 partition names", partialNames.size() == 5); assertTrue("Not all part names returned", partialNames.containsAll(partNames)); partNames.add(part2Name); partNames.add(part3Name); partialNames = client.listPartitionNames(dbName, tblName, partialVals, (short) -1); assertEquals("Should have returned 2 partition names", 2, partialNames.size());
List<String> partitions = client.listPartitionNames(dbName, tblName, (short)-1);
/** * Query Hive metastore if a table's partition exists already. * @param client Hive client * @param db Hive database name * @param table Hive table name * @param partitionValues list of partition values * @return true if partition exists */ private boolean partitionExists( HiveMetaStoreClient client, String db, String table, List<String> partitionValues) { List<String> partitionNames; try { partitionNames = client.listPartitionNames(db, table, partitionValues, (short) 1); // CHECKSTYLE: stop IllegalCatch } catch (Exception e) { // CHECKSTYLE: resume IllegalCatch return false; } return !partitionNames.isEmpty(); }
List<String> partitionsInfo = Lists.newArrayList(); try { List<String> partitionNames = hiveMetaStoreClient.listPartitionNames(dbName,tableName, (short) 10000); List<Partition> partitions = hiveMetaStoreClient.listPartitions(dbName,tableName, (short) 10000); for(Partition partition:partitions){
String authzObject = (dbName + "." + tableName).intern(); List<String> tblPartNames = client.getClient().listPartitionNames(dbName, tableName, (short) -1);
Lists.newArrayList(tableName))) .thenReturn(Lists.newArrayList(mockTable)); Mockito.when(client.listPartitionNames(dbName, tableName, (short) -1)) .thenReturn(table.partitions);
List<String> partNames = hms.listPartitionNames(t.getDbName(), t.getTableName(), (short)-1); int batchSize = PARTITION_BATCH_SIZE; int numWholeBatches = partNames.size()/batchSize;
Lists.newArrayList(tableName))) .thenReturn(Lists.newArrayList(mockTable)); Mockito.when(client.listPartitionNames(dbName, tableName, (short) -1)) .thenReturn(table.partitions);
List<String> partNames = hms.listPartitionNames(t.getDbName(), t.getTableName(), (short)-1); int batchSize = PARTITION_BATCH_SIZE; int numWholeBatches = partNames.size()/batchSize;