Search in sources :

Example 1 with AccumuloTableHandle

use of com.facebook.presto.accumulo.model.AccumuloTableHandle in project presto by prestodb.

the class AccumuloSplitManager method getSplits.

@Override
public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layout) {
    AccumuloTableLayoutHandle layoutHandle = (AccumuloTableLayoutHandle) layout;
    AccumuloTableHandle tableHandle = layoutHandle.getTable();
    String schemaName = tableHandle.getSchema();
    String tableName = tableHandle.getTable();
    String rowIdName = tableHandle.getRowId();
    // Get non-row ID column constraints
    List<AccumuloColumnConstraint> constraints = getColumnConstraints(rowIdName, layoutHandle.getConstraint());
    // Get the row domain column range
    Optional<Domain> rDom = getRangeDomain(rowIdName, layoutHandle.getConstraint());
    // Call out to our client to retrieve all tablet split metadata using the row ID domain and the secondary index
    List<TabletSplitMetadata> tabletSplits = client.getTabletSplits(session, schemaName, tableName, rDom, constraints, tableHandle.getSerializerInstance());
    // Pack the tablet split metadata into a connector split
    ImmutableList.Builder<ConnectorSplit> cSplits = ImmutableList.builder();
    for (TabletSplitMetadata splitMetadata : tabletSplits) {
        AccumuloSplit split = new AccumuloSplit(connectorId, schemaName, tableName, rowIdName, tableHandle.getSerializerClassName(), splitMetadata.getRanges().stream().map(WrappedRange::new).collect(Collectors.toList()), constraints, tableHandle.getScanAuthorizations(), splitMetadata.getHostPort());
        cSplits.add(split);
    }
    return new FixedSplitSource(cSplits.build());
}
Also used : AccumuloColumnConstraint(com.facebook.presto.accumulo.model.AccumuloColumnConstraint) ImmutableList(com.google.common.collect.ImmutableList) TabletSplitMetadata(com.facebook.presto.accumulo.model.TabletSplitMetadata) AccumuloSplit(com.facebook.presto.accumulo.model.AccumuloSplit) WrappedRange(com.facebook.presto.accumulo.model.WrappedRange) AccumuloTableLayoutHandle(com.facebook.presto.accumulo.model.AccumuloTableLayoutHandle) FixedSplitSource(com.facebook.presto.spi.FixedSplitSource) AccumuloTableHandle(com.facebook.presto.accumulo.model.AccumuloTableHandle) ColumnDomain(com.facebook.presto.spi.predicate.TupleDomain.ColumnDomain) TupleDomain(com.facebook.presto.spi.predicate.TupleDomain) Domain(com.facebook.presto.spi.predicate.Domain) ConnectorSplit(com.facebook.presto.spi.ConnectorSplit)

Example 2 with AccumuloTableHandle

use of com.facebook.presto.accumulo.model.AccumuloTableHandle in project presto by prestodb.

the class AccumuloMetadata method getTableLayouts.

@Override
public List<ConnectorTableLayoutResult> getTableLayouts(ConnectorSession session, ConnectorTableHandle table, Constraint<ColumnHandle> constraint, Optional<Set<ColumnHandle>> desiredColumns) {
    AccumuloTableHandle tableHandle = (AccumuloTableHandle) table;
    ConnectorTableLayout layout = new ConnectorTableLayout(new AccumuloTableLayoutHandle(tableHandle, constraint.getSummary()));
    return ImmutableList.of(new ConnectorTableLayoutResult(layout, constraint.getSummary()));
}
Also used : AccumuloTableLayoutHandle(com.facebook.presto.accumulo.model.AccumuloTableLayoutHandle) ConnectorTableLayoutResult(com.facebook.presto.spi.ConnectorTableLayoutResult) ConnectorTableLayout(com.facebook.presto.spi.ConnectorTableLayout) AccumuloTableHandle(com.facebook.presto.accumulo.model.AccumuloTableHandle)

Example 3 with AccumuloTableHandle

use of com.facebook.presto.accumulo.model.AccumuloTableHandle in project presto by prestodb.

the class AccumuloMetadata method beginCreateTable.

@Override
public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional<ConnectorNewTableLayout> layout) {
    checkNoRollback();
    SchemaTableName tableName = tableMetadata.getTable();
    AccumuloTable table = client.createTable(tableMetadata);
    AccumuloTableHandle handle = new AccumuloTableHandle(connectorId, tableName.getSchemaName(), tableName.getTableName(), table.getRowId(), table.isExternal(), table.getSerializerClassName(), table.getScanAuthorizations());
    setRollback(() -> rollbackCreateTable(table));
    return handle;
}
Also used : AccumuloTable(com.facebook.presto.accumulo.metadata.AccumuloTable) AccumuloTableHandle(com.facebook.presto.accumulo.model.AccumuloTableHandle) SchemaTableName(com.facebook.presto.spi.SchemaTableName)

Example 4 with AccumuloTableHandle

use of com.facebook.presto.accumulo.model.AccumuloTableHandle in project presto by prestodb.

the class AccumuloMetadata method getTableMetadata.

@Override
public ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle table) {
    AccumuloTableHandle handle = (AccumuloTableHandle) table;
    checkArgument(handle.getConnectorId().equals(connectorId), "table is not for this connector");
    SchemaTableName tableName = new SchemaTableName(handle.getSchema(), handle.getTable());
    ConnectorTableMetadata metadata = getTableMetadata(tableName);
    if (metadata == null) {
        throw new TableNotFoundException(tableName);
    }
    return metadata;
}
Also used : TableNotFoundException(com.facebook.presto.spi.TableNotFoundException) AccumuloTableHandle(com.facebook.presto.accumulo.model.AccumuloTableHandle) SchemaTableName(com.facebook.presto.spi.SchemaTableName) ConnectorTableMetadata(com.facebook.presto.spi.ConnectorTableMetadata)

Example 5 with AccumuloTableHandle

use of com.facebook.presto.accumulo.model.AccumuloTableHandle in project presto by prestodb.

the class AccumuloMetadata method beginInsert.

@Override
public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) {
    checkNoRollback();
    AccumuloTableHandle handle = (AccumuloTableHandle) tableHandle;
    setRollback(() -> rollbackInsert(handle));
    return handle;
}
Also used : AccumuloTableHandle(com.facebook.presto.accumulo.model.AccumuloTableHandle)

Aggregations

AccumuloTableHandle (com.facebook.presto.accumulo.model.AccumuloTableHandle)9 AccumuloTable (com.facebook.presto.accumulo.metadata.AccumuloTable)4 SchemaTableName (com.facebook.presto.spi.SchemaTableName)3 TableNotFoundException (com.facebook.presto.spi.TableNotFoundException)3 AccumuloColumnHandle (com.facebook.presto.accumulo.model.AccumuloColumnHandle)2 AccumuloTableLayoutHandle (com.facebook.presto.accumulo.model.AccumuloTableLayoutHandle)2 AccumuloColumnConstraint (com.facebook.presto.accumulo.model.AccumuloColumnConstraint)1 AccumuloSplit (com.facebook.presto.accumulo.model.AccumuloSplit)1 TabletSplitMetadata (com.facebook.presto.accumulo.model.TabletSplitMetadata)1 WrappedRange (com.facebook.presto.accumulo.model.WrappedRange)1 ColumnHandle (com.facebook.presto.spi.ColumnHandle)1 ConnectorSplit (com.facebook.presto.spi.ConnectorSplit)1 ConnectorTableLayout (com.facebook.presto.spi.ConnectorTableLayout)1 ConnectorTableLayoutResult (com.facebook.presto.spi.ConnectorTableLayoutResult)1 ConnectorTableMetadata (com.facebook.presto.spi.ConnectorTableMetadata)1 FixedSplitSource (com.facebook.presto.spi.FixedSplitSource)1 PrestoException (com.facebook.presto.spi.PrestoException)1 Domain (com.facebook.presto.spi.predicate.Domain)1 TupleDomain (com.facebook.presto.spi.predicate.TupleDomain)1 ColumnDomain (com.facebook.presto.spi.predicate.TupleDomain.ColumnDomain)1