Search in sources :

Example 1 with AccumuloSplit

use of com.facebook.presto.accumulo.model.AccumuloSplit 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 AccumuloSplit

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

the class AccumuloRecordSetProvider method getRecordSet.

@Override
public RecordSet getRecordSet(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<? extends ColumnHandle> columns) {
    requireNonNull(split, "split is null");
    requireNonNull(columns, "columns is null");
    // Convert split
    AccumuloSplit accSplit = (AccumuloSplit) split;
    checkArgument(accSplit.getConnectorId().equals(connectorId), "split is not for this connector");
    // Convert all columns handles
    ImmutableList.Builder<AccumuloColumnHandle> handles = ImmutableList.builder();
    for (ColumnHandle handle : columns) {
        handles.add((AccumuloColumnHandle) handle);
    }
    // Return new record set
    return new AccumuloRecordSet(connector, session, accSplit, username, handles.build());
}
Also used : AccumuloColumnHandle(com.facebook.presto.accumulo.model.AccumuloColumnHandle) ColumnHandle(com.facebook.presto.spi.ColumnHandle) ImmutableList(com.google.common.collect.ImmutableList) AccumuloColumnHandle(com.facebook.presto.accumulo.model.AccumuloColumnHandle) AccumuloSplit(com.facebook.presto.accumulo.model.AccumuloSplit)

Aggregations

AccumuloSplit (com.facebook.presto.accumulo.model.AccumuloSplit)2 ImmutableList (com.google.common.collect.ImmutableList)2 AccumuloColumnConstraint (com.facebook.presto.accumulo.model.AccumuloColumnConstraint)1 AccumuloColumnHandle (com.facebook.presto.accumulo.model.AccumuloColumnHandle)1 AccumuloTableHandle (com.facebook.presto.accumulo.model.AccumuloTableHandle)1 AccumuloTableLayoutHandle (com.facebook.presto.accumulo.model.AccumuloTableLayoutHandle)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 FixedSplitSource (com.facebook.presto.spi.FixedSplitSource)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