Search in sources :

Example 1 with ObjectStore

use of org.apache.hadoop.hive.metastore.ObjectStore in project hive by apache.

the class TestHBaseImport method importOneFunc.

@Test
public void importOneFunc() throws Exception {
    RawStore rdbms;
    rdbms = new ObjectStore();
    rdbms.setConf(conf);
    String[] dbNames = new String[] { "onefuncdb1", "onefuncdb2" };
    String[] roles = new String[] { "onefuncrole1", "onefuncrole2" };
    String[] tokenIds = new String[] { "onefunctokenid1", "onefunctokenid2" };
    String[] tokens = new String[] { "onefunctoken1", "onefunctoken2" };
    String[] masterKeys = new String[] { "onefuncmk1", "onefuncmk2" };
    int now = (int) System.currentTimeMillis() / 1000;
    setupObjectStore(rdbms, roles, dbNames, tokenIds, tokens, masterKeys, now);
    int baseNumRoles = store.listRoleNames() == null ? 0 : store.listRoleNames().size();
    int baseNumDbs = store.getAllDatabases() == null ? 0 : store.getAllDatabases().size();
    int baseNumToks = store.getAllTokenIdentifiers() == null ? 0 : store.getAllTokenIdentifiers().size();
    int baseNumKeys = store.getMasterKeys() == null ? 0 : store.getMasterKeys().length;
    // Create the database so I can put the function in it.
    store.createDatabase(new Database(dbNames[0], "no description", "file:/tmp", emptyParameters));
    HBaseImport importer = new HBaseImport("-f", dbNames[0] + "." + funcNames[0]);
    importer.setConnections(rdbms, store);
    importer.run();
    // Make sure there aren't any extra roles
    Assert.assertEquals(baseNumRoles, store.listRoleNames().size());
    Database db = store.getDatabase(dbNames[0]);
    Assert.assertNotNull(db);
    Assert.assertEquals(0, store.getAllTables(dbNames[0]).size());
    Assert.assertEquals(1, store.getFunctions(dbNames[0], "*").size());
    Assert.assertNotNull(store.getFunction(dbNames[0], funcNames[0]));
    Assert.assertNull(store.getFunction(dbNames[0], funcNames[1]));
    Assert.assertEquals(baseNumDbs + 1, store.getAllDatabases().size());
    Assert.assertEquals(baseNumToks, store.getAllTokenIdentifiers().size());
    String[] hbaseKeys = store.getMasterKeys();
    Assert.assertEquals(baseNumKeys, hbaseKeys.length);
}
Also used : TestObjectStore(org.apache.hadoop.hive.metastore.TestObjectStore) ObjectStore(org.apache.hadoop.hive.metastore.ObjectStore) Database(org.apache.hadoop.hive.metastore.api.Database) RawStore(org.apache.hadoop.hive.metastore.RawStore) Test(org.junit.Test)

Example 2 with ObjectStore

use of org.apache.hadoop.hive.metastore.ObjectStore in project hive by apache.

the class TestHBaseImport method importAll.

@Test
public void importAll() throws Exception {
    RawStore rdbms;
    rdbms = new ObjectStore();
    rdbms.setConf(conf);
    String[] dbNames = new String[] { "alldb1", "alldb2" };
    String[] roles = new String[] { "allrole1", "allrole2" };
    String[] tokenIds = new String[] { "alltokenid1", "alltokenid2" };
    String[] tokens = new String[] { "alltoken1", "alltoken2" };
    String[] masterKeys = new String[] { "allmk1", "allmk2" };
    int now = (int) System.currentTimeMillis() / 1000;
    setupObjectStore(rdbms, roles, dbNames, tokenIds, tokens, masterKeys, now);
    int baseNumRoles = store.listRoleNames() == null ? 0 : store.listRoleNames().size();
    int baseNumDbs = store.getAllDatabases() == null ? 0 : store.getAllDatabases().size();
    HBaseImport importer = new HBaseImport("-a");
    importer.setConnections(rdbms, store);
    importer.run();
    for (int i = 0; i < roles.length; i++) {
        Role role = store.getRole(roles[i]);
        Assert.assertNotNull(role);
        Assert.assertEquals(roles[i], role.getRoleName());
    }
    // Make sure there aren't any extra roles
    Assert.assertEquals(baseNumRoles + 2, store.listRoleNames().size());
    for (int i = 0; i < dbNames.length; i++) {
        Database db = store.getDatabase(dbNames[i]);
        Assert.assertNotNull(db);
        // check one random value in the db rather than every value
        Assert.assertEquals("file:/tmp", db.getLocationUri());
        Table table = store.getTable(db.getName(), tableNames[0]);
        Assert.assertNotNull(table);
        Assert.assertEquals(now, table.getLastAccessTime());
        Assert.assertEquals("input", table.getSd().getInputFormat());
        table = store.getTable(db.getName(), tableNames[1]);
        Assert.assertNotNull(table);
        for (int j = 0; j < partVals.length; j++) {
            Partition part = store.getPartition(dbNames[i], tableNames[1], Arrays.asList(partVals[j]));
            Assert.assertNotNull(part);
            Assert.assertEquals("file:/tmp/region=" + partVals[j], part.getSd().getLocation());
        }
        Assert.assertEquals(4, store.getPartitions(dbNames[i], tableNames[1], -1).size());
        // Including two index table
        Assert.assertEquals(4, store.getAllTables(dbNames[i]).size());
        Assert.assertEquals(2, store.getIndexes(dbNames[i], tableNames[0], -1).size());
        Assert.assertEquals(0, store.getIndexes(dbNames[i], tableNames[1], -1).size());
        Assert.assertEquals(2, store.getFunctions(dbNames[i], "*").size());
        for (int j = 0; j < funcNames.length; j++) {
            Assert.assertNotNull(store.getFunction(dbNames[i], funcNames[j]));
        }
    }
    Assert.assertEquals(baseNumDbs + 2, store.getAllDatabases().size());
    // guarantee.
    for (int i = 0; i < tokenIds.length; i++) {
        Assert.assertEquals(tokens[i], store.getToken(tokenIds[i]));
    }
    String[] hbaseKeys = store.getMasterKeys();
    Set<String> keys = new HashSet<>(Arrays.asList(hbaseKeys));
    for (int i = 0; i < masterKeys.length; i++) {
        Assert.assertTrue(keys.contains(masterKeys[i]));
    }
}
Also used : Role(org.apache.hadoop.hive.metastore.api.Role) Partition(org.apache.hadoop.hive.metastore.api.Partition) TestObjectStore(org.apache.hadoop.hive.metastore.TestObjectStore) ObjectStore(org.apache.hadoop.hive.metastore.ObjectStore) Table(org.apache.hadoop.hive.metastore.api.Table) Database(org.apache.hadoop.hive.metastore.api.Database) RawStore(org.apache.hadoop.hive.metastore.RawStore) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with ObjectStore

use of org.apache.hadoop.hive.metastore.ObjectStore in project hive by apache.

the class TestHBaseImport method importOneDb.

@Test
public void importOneDb() throws Exception {
    RawStore rdbms;
    rdbms = new ObjectStore();
    rdbms.setConf(conf);
    String[] dbNames = new String[] { "onedbdb1", "onedbdb2" };
    String[] roles = new String[] { "onedbrole1", "onedbrole2" };
    String[] tokenIds = new String[] { "onedbtokenid1", "onedbtokenid2" };
    String[] tokens = new String[] { "onedbtoken1", "onedbtoken2" };
    String[] masterKeys = new String[] { "onedbmk1", "onedbmk2" };
    int now = (int) System.currentTimeMillis() / 1000;
    setupObjectStore(rdbms, roles, dbNames, tokenIds, tokens, masterKeys, now);
    int baseNumRoles = store.listRoleNames() == null ? 0 : store.listRoleNames().size();
    int baseNumDbs = store.getAllDatabases() == null ? 0 : store.getAllDatabases().size();
    int baseNumToks = store.getAllTokenIdentifiers() == null ? 0 : store.getAllTokenIdentifiers().size();
    int baseNumKeys = store.getMasterKeys() == null ? 0 : store.getMasterKeys().length;
    HBaseImport importer = new HBaseImport("-d", dbNames[0]);
    importer.setConnections(rdbms, store);
    importer.run();
    // Make sure there aren't any extra roles
    Assert.assertEquals(baseNumRoles, store.listRoleNames().size());
    Database db = store.getDatabase(dbNames[0]);
    Assert.assertNotNull(db);
    // check one random value in the db rather than every value
    Assert.assertEquals("file:/tmp", db.getLocationUri());
    Table table = store.getTable(db.getName(), tableNames[0]);
    Assert.assertNotNull(table);
    Assert.assertEquals(now, table.getLastAccessTime());
    Assert.assertEquals("input", table.getSd().getInputFormat());
    table = store.getTable(db.getName(), tableNames[1]);
    Assert.assertNotNull(table);
    for (int j = 0; j < partVals.length; j++) {
        Partition part = store.getPartition(dbNames[0], tableNames[1], Arrays.asList(partVals[j]));
        Assert.assertNotNull(part);
        Assert.assertEquals("file:/tmp/region=" + partVals[j], part.getSd().getLocation());
    }
    Assert.assertEquals(4, store.getPartitions(dbNames[0], tableNames[1], -1).size());
    // Including two index table
    Assert.assertEquals(4, store.getAllTables(dbNames[0]).size());
    Assert.assertEquals(2, store.getIndexes(dbNames[0], tableNames[0], -1).size());
    Assert.assertEquals(0, store.getIndexes(dbNames[0], tableNames[1], -1).size());
    Assert.assertEquals(2, store.getFunctions(dbNames[0], "*").size());
    for (int j = 0; j < funcNames.length; j++) {
        Assert.assertNotNull(store.getFunction(dbNames[0], funcNames[j]));
    }
    Assert.assertEquals(baseNumDbs + 1, store.getAllDatabases().size());
    Assert.assertEquals(baseNumToks, store.getAllTokenIdentifiers().size());
    String[] hbaseKeys = store.getMasterKeys();
    Assert.assertEquals(baseNumKeys, hbaseKeys.length);
    // Have to do this last as it will throw an exception
    thrown.expect(NoSuchObjectException.class);
    store.getDatabase(dbNames[1]);
}
Also used : Partition(org.apache.hadoop.hive.metastore.api.Partition) TestObjectStore(org.apache.hadoop.hive.metastore.TestObjectStore) ObjectStore(org.apache.hadoop.hive.metastore.ObjectStore) Table(org.apache.hadoop.hive.metastore.api.Table) Database(org.apache.hadoop.hive.metastore.api.Database) RawStore(org.apache.hadoop.hive.metastore.RawStore) Test(org.junit.Test)

Example 4 with ObjectStore

use of org.apache.hadoop.hive.metastore.ObjectStore in project hive by apache.

the class TestHBaseImport method parallelOdd.

// Same as the test above except we create 9 of everything instead of 10.  This is important
// because in using a batch size of 2 the previous test guarantees 10 /2 =5 , meaning we'll
// have 5 writes on the partition queue with exactly 2 entries.  In this test we'll handle the
// case where the last entry in the queue has fewer partitions.
@Test
public void parallelOdd() throws Exception {
    int parallelFactor = 9;
    RawStore rdbms;
    rdbms = new ObjectStore();
    rdbms.setConf(conf);
    String[] dbNames = new String[] { "oddparalleldb1" };
    int now = (int) System.currentTimeMillis() / 1000;
    for (int i = 0; i < dbNames.length; i++) {
        rdbms.createDatabase(new Database(dbNames[i], "no description", "file:/tmp", emptyParameters));
        List<FieldSchema> cols = new ArrayList<>();
        cols.add(new FieldSchema("col1", "int", "nocomment"));
        SerDeInfo serde = new SerDeInfo("serde", "seriallib", null);
        StorageDescriptor sd = new StorageDescriptor(cols, "file:/tmp", "input", "output", false, 0, serde, null, null, emptyParameters);
        List<FieldSchema> partCols = new ArrayList<>();
        partCols.add(new FieldSchema("region", "string", ""));
        for (int j = 0; j < parallelFactor; j++) {
            rdbms.createTable(new Table("t" + j, dbNames[i], "me", now, now, 0, sd, partCols, emptyParameters, null, null, null));
            for (int k = 0; k < parallelFactor; k++) {
                StorageDescriptor psd = new StorageDescriptor(sd);
                psd.setLocation("file:/tmp/region=" + k);
                Partition part = new Partition(Arrays.asList("p" + k), dbNames[i], "t" + j, now, now, psd, emptyParameters);
                rdbms.addPartition(part);
            }
        }
    }
    HBaseImport importer = new HBaseImport("-p", "2", "-b", "2", "-d", dbNames[0]);
    importer.setConnections(rdbms, store);
    importer.run();
    for (int i = 0; i < dbNames.length; i++) {
        Database db = store.getDatabase(dbNames[i]);
        Assert.assertNotNull(db);
        for (int j = 0; j < parallelFactor; j++) {
            Table table = store.getTable(db.getName(), "t" + j);
            Assert.assertNotNull(table);
            Assert.assertEquals(now, table.getLastAccessTime());
            Assert.assertEquals("input", table.getSd().getInputFormat());
            for (int k = 0; k < parallelFactor; k++) {
                Partition part = store.getPartition(dbNames[i], "t" + j, Arrays.asList("p" + k));
                Assert.assertNotNull(part);
                Assert.assertEquals("file:/tmp/region=" + k, part.getSd().getLocation());
            }
            Assert.assertEquals(parallelFactor, store.getPartitions(dbNames[i], "t" + j, -1).size());
        }
        Assert.assertEquals(parallelFactor, store.getAllTables(dbNames[i]).size());
    }
}
Also used : Partition(org.apache.hadoop.hive.metastore.api.Partition) TestObjectStore(org.apache.hadoop.hive.metastore.TestObjectStore) ObjectStore(org.apache.hadoop.hive.metastore.ObjectStore) Table(org.apache.hadoop.hive.metastore.api.Table) FieldSchema(org.apache.hadoop.hive.metastore.api.FieldSchema) SerDeInfo(org.apache.hadoop.hive.metastore.api.SerDeInfo) ArrayList(java.util.ArrayList) StorageDescriptor(org.apache.hadoop.hive.metastore.api.StorageDescriptor) RawStore(org.apache.hadoop.hive.metastore.RawStore) Database(org.apache.hadoop.hive.metastore.api.Database) Test(org.junit.Test)

Example 5 with ObjectStore

use of org.apache.hadoop.hive.metastore.ObjectStore in project hive by apache.

the class TestHBaseImport method importOneTableNonPartitioned.

@Test
public void importOneTableNonPartitioned() throws Exception {
    RawStore rdbms;
    rdbms = new ObjectStore();
    rdbms.setConf(conf);
    String[] dbNames = new String[] { "onetabdb1", "onetabdb2" };
    String[] roles = new String[] { "onetabrole1", "onetabrole2" };
    String[] tokenIds = new String[] { "onetabtokenid1", "onetabtokenid2" };
    String[] tokens = new String[] { "onetabtoken1", "onetabtoken2" };
    String[] masterKeys = new String[] { "onetabmk1", "onetabmk2" };
    int now = (int) System.currentTimeMillis() / 1000;
    setupObjectStore(rdbms, roles, dbNames, tokenIds, tokens, masterKeys, now);
    int baseNumRoles = store.listRoleNames() == null ? 0 : store.listRoleNames().size();
    int baseNumDbs = store.getAllDatabases() == null ? 0 : store.getAllDatabases().size();
    int baseNumToks = store.getAllTokenIdentifiers() == null ? 0 : store.getAllTokenIdentifiers().size();
    int baseNumKeys = store.getMasterKeys() == null ? 0 : store.getMasterKeys().length;
    // Create the database so I can put the table in it.
    store.createDatabase(new Database(dbNames[0], "no description", "file:/tmp", emptyParameters));
    HBaseImport importer = new HBaseImport("-t", dbNames[0] + "." + tableNames[0]);
    importer.setConnections(rdbms, store);
    importer.run();
    // Make sure there aren't any extra roles
    Assert.assertEquals(baseNumRoles, store.listRoleNames().size());
    Database db = store.getDatabase(dbNames[0]);
    Assert.assertNotNull(db);
    Table table = store.getTable(db.getName(), tableNames[0]);
    Assert.assertNotNull(table);
    Assert.assertEquals(1, store.getAllTables(db.getName()).size());
    Assert.assertNull(store.getTable(db.getName(), tableNames[1]));
    List<Index> indexes = store.getIndexes(db.getName(), tableNames[0], -1);
    Assert.assertEquals(2, indexes.size());
    Assert.assertEquals(0, store.getFunctions(dbNames[0], "*").size());
    Assert.assertEquals(baseNumDbs + 1, store.getAllDatabases().size());
    Assert.assertEquals(baseNumToks, store.getAllTokenIdentifiers().size());
    String[] hbaseKeys = store.getMasterKeys();
    Assert.assertEquals(baseNumKeys, hbaseKeys.length);
}
Also used : TestObjectStore(org.apache.hadoop.hive.metastore.TestObjectStore) ObjectStore(org.apache.hadoop.hive.metastore.ObjectStore) Table(org.apache.hadoop.hive.metastore.api.Table) Database(org.apache.hadoop.hive.metastore.api.Database) Index(org.apache.hadoop.hive.metastore.api.Index) RawStore(org.apache.hadoop.hive.metastore.RawStore) Test(org.junit.Test)

Aggregations

ObjectStore (org.apache.hadoop.hive.metastore.ObjectStore)15 RawStore (org.apache.hadoop.hive.metastore.RawStore)12 TestObjectStore (org.apache.hadoop.hive.metastore.TestObjectStore)12 Test (org.junit.Test)10 Database (org.apache.hadoop.hive.metastore.api.Database)8 Table (org.apache.hadoop.hive.metastore.api.Table)7 Partition (org.apache.hadoop.hive.metastore.api.Partition)5 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 FieldSchema (org.apache.hadoop.hive.metastore.api.FieldSchema)2 Index (org.apache.hadoop.hive.metastore.api.Index)2 MetaException (org.apache.hadoop.hive.metastore.api.MetaException)2 Role (org.apache.hadoop.hive.metastore.api.Role)2 SerDeInfo (org.apache.hadoop.hive.metastore.api.SerDeInfo)2 StorageDescriptor (org.apache.hadoop.hive.metastore.api.StorageDescriptor)2 SQLForeignKey (org.apache.hadoop.hive.metastore.api.SQLForeignKey)1 SQLPrimaryKey (org.apache.hadoop.hive.metastore.api.SQLPrimaryKey)1 AfterClass (org.junit.AfterClass)1 BeforeClass (org.junit.BeforeClass)1