Search in sources :

Example 11 with Table

use of com.netflix.metacat.connector.s3.model.Table in project metacat by Netflix.

the class S3ConnectorTableService method create.

@Override
public void create(@Nonnull final ConnectorContext context, @Nonnull final TableInfo tableInfo) {
    log.debug("Start: Create table {}", tableInfo.getName());
    Preconditions.checkArgument(tableInfo.getSerde() == null || !Strings.isNullOrEmpty(tableInfo.getSerde().getOwner()), "Table owner is null or empty");
    final QualifiedName tableName = tableInfo.getName();
    if (tableDao.getBySourceDatabaseTableName(catalogName, tableName.getDatabaseName(), tableName.getTableName()) != null) {
        throw new TableAlreadyExistsException(tableName);
    }
    final Database database = databaseDao.getBySourceDatabaseName(catalogName, tableName.getDatabaseName());
    if (database == null) {
        throw new DatabaseNotFoundException(QualifiedName.ofDatabase(catalogName, tableName.getDatabaseName()));
    }
    tableDao.save(infoConverter.fromTableInfo(database, tableInfo));
    log.debug("End: Create table {}", tableInfo.getName());
}
Also used : TableAlreadyExistsException(com.netflix.metacat.common.server.connectors.exception.TableAlreadyExistsException) QualifiedName(com.netflix.metacat.common.QualifiedName) DatabaseNotFoundException(com.netflix.metacat.common.server.connectors.exception.DatabaseNotFoundException) Database(com.netflix.metacat.connector.s3.model.Database)

Example 12 with Table

use of com.netflix.metacat.connector.s3.model.Table in project metacat by Netflix.

the class S3ConnectorInfoConverter method toLocation.

/**
     * Creates location.
     * @param tableInfo table info
     * @return location
     */
public Location toLocation(final TableInfo tableInfo) {
    final Location location = fromStorageInfo(tableInfo.getSerde());
    final Schema schema = new Schema();
    schema.setLocation(location);
    schema.setFields(toFields(tableInfo, schema));
    location.setSchema(schema);
    return location;
}
Also used : Schema(com.netflix.metacat.connector.s3.model.Schema) Location(com.netflix.metacat.connector.s3.model.Location)

Example 13 with Table

use of com.netflix.metacat.connector.s3.model.Table in project metacat by Netflix.

the class S3ConnectorInfoConverter method toStorageInfo.

/**
     * Converts from s3 table info to storage info.
     * @param table table info
     * @return table info
     */
StorageInfo toStorageInfo(final Table table) {
    StorageInfo result = null;
    final Location location = table.getLocation();
    if (location != null) {
        final Map<String, String> infoParameters = Maps.newHashMap();
        result = new StorageInfo();
        result.setUri(location.getUri());
        final Info info = location.getInfo();
        if (info != null) {
            result.setOwner(info.getOwner());
            result.setInputFormat(info.getInputFormat());
            result.setOutputFormat(info.getOutputFormat());
            result.setSerializationLib(info.getSerializationLib());
            if (info.getParameters() != null) {
                infoParameters.putAll(info.getParameters());
            }
        }
        result.setSerdeInfoParameters(infoParameters);
        result.setParameters(Maps.newHashMap());
    }
    return result;
}
Also used : StorageInfo(com.netflix.metacat.common.server.connectors.model.StorageInfo) AuditInfo(com.netflix.metacat.common.server.connectors.model.AuditInfo) DatabaseInfo(com.netflix.metacat.common.server.connectors.model.DatabaseInfo) FieldInfo(com.netflix.metacat.common.server.connectors.model.FieldInfo) PartitionInfo(com.netflix.metacat.common.server.connectors.model.PartitionInfo) StorageInfo(com.netflix.metacat.common.server.connectors.model.StorageInfo) Info(com.netflix.metacat.connector.s3.model.Info) TableInfo(com.netflix.metacat.common.server.connectors.model.TableInfo) Location(com.netflix.metacat.connector.s3.model.Location)

Example 14 with Table

use of com.netflix.metacat.connector.s3.model.Table in project metacat by Netflix.

the class S3ConnectorInfoConverter method getOwner.

/**
     * Gets the owner for the given table.
     * @param table table info
     * @return owner name
     */
public String getOwner(final Table table) {
    String result = null;
    final Location location = table.getLocation();
    if (location != null) {
        final Info info = location.getInfo();
        if (info != null) {
            result = info.getOwner();
        }
    }
    return result;
}
Also used : AuditInfo(com.netflix.metacat.common.server.connectors.model.AuditInfo) DatabaseInfo(com.netflix.metacat.common.server.connectors.model.DatabaseInfo) FieldInfo(com.netflix.metacat.common.server.connectors.model.FieldInfo) PartitionInfo(com.netflix.metacat.common.server.connectors.model.PartitionInfo) StorageInfo(com.netflix.metacat.common.server.connectors.model.StorageInfo) Info(com.netflix.metacat.connector.s3.model.Info) TableInfo(com.netflix.metacat.common.server.connectors.model.TableInfo) Location(com.netflix.metacat.connector.s3.model.Location)

Example 15 with Table

use of com.netflix.metacat.connector.s3.model.Table in project metacat by Netflix.

the class S3ConnectorInfoConverter method fromTableInfo.

@Override
public Table fromTableInfo(final TableInfo tableInfo) {
    final Table result = new Table();
    result.setName(tableInfo.getName().getTableName());
    final Location location = toLocation(tableInfo);
    if (location != null) {
        result.setLocation(location);
        location.setTable(result);
    }
    return result;
}
Also used : Table(com.netflix.metacat.connector.s3.model.Table) Location(com.netflix.metacat.connector.s3.model.Location)

Aggregations

Table (com.netflix.metacat.connector.s3.model.Table)13 QualifiedName (com.netflix.metacat.common.QualifiedName)7 Location (com.netflix.metacat.connector.s3.model.Location)7 TableNotFoundException (com.netflix.metacat.common.server.connectors.exception.TableNotFoundException)6 Partition (com.netflix.metacat.connector.s3.model.Partition)6 FieldInfo (com.netflix.metacat.common.server.connectors.model.FieldInfo)5 PartitionInfo (com.netflix.metacat.common.server.connectors.model.PartitionInfo)5 FilterPartition (com.netflix.metacat.common.server.partition.util.FilterPartition)5 PartitionNotFoundException (com.netflix.metacat.common.server.connectors.exception.PartitionNotFoundException)4 TableInfo (com.netflix.metacat.common.server.connectors.model.TableInfo)4 Field (com.netflix.metacat.connector.s3.model.Field)4 Info (com.netflix.metacat.connector.s3.model.Info)4 Schema (com.netflix.metacat.connector.s3.model.Schema)4 PartitionAlreadyExistsException (com.netflix.metacat.common.server.connectors.exception.PartitionAlreadyExistsException)3 AuditInfo (com.netflix.metacat.common.server.connectors.model.AuditInfo)3 DatabaseInfo (com.netflix.metacat.common.server.connectors.model.DatabaseInfo)3 StorageInfo (com.netflix.metacat.common.server.connectors.model.StorageInfo)3 Strings (com.google.common.base.Strings)2 Lists (com.google.common.collect.Lists)2 Maps (com.google.common.collect.Maps)2