Package com.cloudera.cdk.data.hbase.avro

Examples of com.cloudera.cdk.data.hbase.avro.AvroEntitySchema


    }

    String entitySchemaString = descriptor.getSchema().toString(true);

    AvroKeyEntitySchemaParser parser = new AvroKeyEntitySchemaParser();
    AvroEntitySchema entitySchema = parser.parseEntitySchema(entitySchemaString);

    String tableName = getTableName(name);
    String entityName = getEntityName(name);

    schemaManager.refreshManagedSchemaCache(tableName, entityName);
    schemaManager.createSchema(tableName, entityName,
        entitySchemaString,
        "com.cloudera.cdk.data.hbase.avro.AvroKeyEntitySchemaParser",
        "com.cloudera.cdk.data.hbase.avro.AvroKeySerDe",
        "com.cloudera.cdk.data.hbase.avro.AvroEntitySerDe");

    try {
      if (!hbaseAdmin.tableExists(tableName)) {
        HTableDescriptor desc = new HTableDescriptor(tableName);
        desc.addFamily(new HColumnDescriptor(Constants.SYS_COL_FAMILY));
        desc.addFamily(new HColumnDescriptor(Constants.OBSERVABLE_COL_FAMILY));
        for (String columnFamily : entitySchema.getRequiredColumnFamilies()) {
          desc.addFamily(new HColumnDescriptor(columnFamily));
        }
        hbaseAdmin.createTable(desc);
      } else {
        Set<String> familiesToAdd = entitySchema.getRequiredColumnFamilies();
        familiesToAdd.add(new String(Constants.SYS_COL_FAMILY));
        familiesToAdd.add(new String(Constants.OBSERVABLE_COL_FAMILY));
        HTableDescriptor desc = hbaseAdmin.getTableDescriptor(tableName
            .getBytes());
        for (HColumnDescriptor columnDesc : desc.getColumnFamilies()) {
View Full Code Here


    schemaManager.deleteSchema(tableName, entityName);

    String entitySchemaString = descriptor.getSchema().toString(true);

    AvroKeyEntitySchemaParser parser = new AvroKeyEntitySchemaParser();
    AvroEntitySchema entitySchema = parser.parseEntitySchema(entitySchemaString);

    // TODO: this may delete columns for other entities if they share column families
    // TODO: https://issues.cloudera.org/browse/CDK-145, https://issues.cloudera.org/browse/CDK-146
    for (String columnFamily : entitySchema.getRequiredColumnFamilies()) {
      try {
        hbaseAdmin.disableTable(tableName);
        try {
          hbaseAdmin.deleteColumn(tableName, columnFamily);
        } finally {
View Full Code Here

   *          exist, and will create families if they don't exist.
   */
  public void createOrMigrateSchema(String tableName,
      String entitySchemaString, boolean createTableAndFamilies) {
    String entityName = getEntityNameFromSchemaString(entitySchemaString);
    AvroEntitySchema entitySchema = parser
        .parseEntitySchema(entitySchemaString);
    AvroKeySchema keySchema = parser.parseKeySchema(entitySchemaString);
    if (schemaManager.hasManagedSchema(tableName, entityName)) {
      KeySchema currentKeySchema = schemaManager.getKeySchema(tableName,
          entityName);
      if (!keySchema.equals(currentKeySchema)) {
        String msg = "Migrating schema with different keys. Current: "
            + currentKeySchema.getRawSchema() + " New: "
            + keySchema.getRawSchema();
        LOG.error(msg);
        throw new SchemaValidationException(msg);
      }
      if (schemaManager.getEntityVersion(tableName, entityName, entitySchema) == -1) {
        LOG.info("Migrating Schema: (" + tableName + ", " + entityName + ")");
        schemaManager.migrateSchema(tableName, entityName, entitySchemaString);
      } else {
        // don't set createTableAndFamilies to false, becasue we may still need
        // to update the table to support what exists in the meta store.
        LOG.info("Schema hasn't changed, not migrating: (" + tableName + ", "
            + entityName + ")");
      }
    } else {
      LOG.info("Creating Schema: (" + tableName + ", " + entityName + ")");
      parser.parseEntitySchema(entitySchemaString).getRequiredColumnFamilies();
      schemaManager.createSchema(tableName, entityName, entitySchemaString,
          "com.cloudera.cdk.data.hbase.avro.AvroKeyEntitySchemaParser",
          "com.cloudera.cdk.data.hbase.avro.AvroKeySerDe",
          "com.cloudera.cdk.data.hbase.avro.AvroEntitySerDe");
    }

    if (createTableAndFamilies) {
      try {
        if (!hbaseAdmin.tableExists(tableName)) {
          HTableDescriptor desc = new HTableDescriptor(tableName);
          desc.addFamily(new HColumnDescriptor(Constants.SYS_COL_FAMILY));
          desc.addFamily(new HColumnDescriptor(Constants.OBSERVABLE_COL_FAMILY));
          for (String columnFamily : entitySchema.getRequiredColumnFamilies()) {
            desc.addFamily(new HColumnDescriptor(columnFamily));
          }
          hbaseAdmin.createTable(desc);
        } else {
          Set<String> familiesToAdd = entitySchema.getRequiredColumnFamilies();
          familiesToAdd.add(new String(Constants.SYS_COL_FAMILY));
          familiesToAdd.add(new String(Constants.OBSERVABLE_COL_FAMILY));
          HTableDescriptor desc = hbaseAdmin.getTableDescriptor(tableName
              .getBytes());
          for (HColumnDescriptor columnDesc : desc.getColumnFamilies()) {
View Full Code Here

TOP

Related Classes of com.cloudera.cdk.data.hbase.avro.AvroEntitySchema

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.