Search in sources :

Example 1 with TSummaries

use of org.apache.accumulo.core.dataImpl.thrift.TSummaries in project accumulo by apache.

the class TableOperationsImpl method summaries.

@Override
public SummaryRetriever summaries(String tableName) {
    EXISTING_TABLE_NAME.validate(tableName);
    return new SummaryRetriever() {

        private Text startRow = null;

        private Text endRow = null;

        private List<TSummarizerConfiguration> summariesToFetch = Collections.emptyList();

        private String summarizerClassRegex;

        private boolean flush = false;

        @Override
        public SummaryRetriever startRow(Text startRow) {
            Objects.requireNonNull(startRow);
            if (endRow != null) {
                Preconditions.checkArgument(startRow.compareTo(endRow) < 0, "Start row must be less than end row : %s >= %s", startRow, endRow);
            }
            this.startRow = startRow;
            return this;
        }

        @Override
        public SummaryRetriever startRow(CharSequence startRow) {
            return startRow(new Text(startRow.toString()));
        }

        @Override
        public List<Summary> retrieve() throws AccumuloException, AccumuloSecurityException, TableNotFoundException {
            TableId tableId = context.getTableId(tableName);
            context.requireNotOffline(tableId, tableName);
            TRowRange range = new TRowRange(TextUtil.getByteBuffer(startRow), TextUtil.getByteBuffer(endRow));
            TSummaryRequest request = new TSummaryRequest(tableId.canonical(), range, summariesToFetch, summarizerClassRegex);
            if (flush) {
                _flush(tableId, startRow, endRow, true);
            }
            TSummaries ret = ServerClient.execute(context, new TabletClientService.Client.Factory(), client -> {
                TSummaries tsr = client.startGetSummaries(TraceUtil.traceInfo(), context.rpcCreds(), request);
                while (!tsr.finished) {
                    tsr = client.contiuneGetSummaries(TraceUtil.traceInfo(), tsr.sessionId);
                }
                return tsr;
            });
            return new SummaryCollection(ret).getSummaries();
        }

        @Override
        public SummaryRetriever endRow(Text endRow) {
            Objects.requireNonNull(endRow);
            if (startRow != null) {
                Preconditions.checkArgument(startRow.compareTo(endRow) < 0, "Start row must be less than end row : %s >= %s", startRow, endRow);
            }
            this.endRow = endRow;
            return this;
        }

        @Override
        public SummaryRetriever endRow(CharSequence endRow) {
            return endRow(new Text(endRow.toString()));
        }

        @Override
        public SummaryRetriever withConfiguration(Collection<SummarizerConfiguration> configs) {
            Objects.requireNonNull(configs);
            summariesToFetch = configs.stream().map(SummarizerConfigurationUtil::toThrift).collect(Collectors.toList());
            return this;
        }

        @Override
        public SummaryRetriever withConfiguration(SummarizerConfiguration... config) {
            Objects.requireNonNull(config);
            return withConfiguration(Arrays.asList(config));
        }

        @Override
        public SummaryRetriever withMatchingConfiguration(String regex) {
            Objects.requireNonNull(regex);
            // Do a sanity check here to make sure that regex compiles, instead of having it fail on a
            // tserver.
            Pattern.compile(regex);
            this.summarizerClassRegex = regex;
            return this;
        }

        @Override
        public SummaryRetriever flush(boolean b) {
            this.flush = b;
            return this;
        }
    };
}
Also used : TableId(org.apache.accumulo.core.data.TableId) Text(org.apache.hadoop.io.Text) SummarizerConfigurationUtil(org.apache.accumulo.core.summary.SummarizerConfigurationUtil) SummaryRetriever(org.apache.accumulo.core.client.admin.SummaryRetriever) TSummaryRequest(org.apache.accumulo.core.dataImpl.thrift.TSummaryRequest) TSummaries(org.apache.accumulo.core.dataImpl.thrift.TSummaries) Summary(org.apache.accumulo.core.client.summary.Summary) SummaryCollection(org.apache.accumulo.core.summary.SummaryCollection) Collection(java.util.Collection) ArrayList(java.util.ArrayList) List(java.util.List) LinkedList(java.util.LinkedList) Client(org.apache.accumulo.core.clientImpl.thrift.ClientService.Client) TRowRange(org.apache.accumulo.core.dataImpl.thrift.TRowRange) SummaryCollection(org.apache.accumulo.core.summary.SummaryCollection) SummarizerConfiguration(org.apache.accumulo.core.client.summary.SummarizerConfiguration) TSummarizerConfiguration(org.apache.accumulo.core.dataImpl.thrift.TSummarizerConfiguration)

Example 2 with TSummaries

use of org.apache.accumulo.core.dataImpl.thrift.TSummaries in project accumulo by apache.

the class ThriftClientHandler method contiuneGetSummaries.

@Override
public TSummaries contiuneGetSummaries(TInfo tinfo, long sessionId) throws NoSuchScanIDException, TException {
    SummarySession session = (SummarySession) server.sessionManager.getSession(sessionId);
    if (session == null) {
        throw new NoSuchScanIDException();
    }
    Future<SummaryCollection> future = session.getFuture();
    try {
        TSummaries tsums = getSummaries(future);
        server.sessionManager.removeSession(sessionId);
        return tsums;
    } catch (TimeoutException e) {
        return handleTimeout(sessionId);
    }
}
Also used : SummarySession(org.apache.accumulo.tserver.session.SummarySession) TSummaries(org.apache.accumulo.core.dataImpl.thrift.TSummaries) SummaryCollection(org.apache.accumulo.core.summary.SummaryCollection) NoSuchScanIDException(org.apache.accumulo.core.tabletserver.thrift.NoSuchScanIDException) TimeoutException(java.util.concurrent.TimeoutException)

Aggregations

TSummaries (org.apache.accumulo.core.dataImpl.thrift.TSummaries)2 SummaryCollection (org.apache.accumulo.core.summary.SummaryCollection)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 TimeoutException (java.util.concurrent.TimeoutException)1 SummaryRetriever (org.apache.accumulo.core.client.admin.SummaryRetriever)1 SummarizerConfiguration (org.apache.accumulo.core.client.summary.SummarizerConfiguration)1 Summary (org.apache.accumulo.core.client.summary.Summary)1 Client (org.apache.accumulo.core.clientImpl.thrift.ClientService.Client)1 TableId (org.apache.accumulo.core.data.TableId)1 TRowRange (org.apache.accumulo.core.dataImpl.thrift.TRowRange)1 TSummarizerConfiguration (org.apache.accumulo.core.dataImpl.thrift.TSummarizerConfiguration)1 TSummaryRequest (org.apache.accumulo.core.dataImpl.thrift.TSummaryRequest)1 SummarizerConfigurationUtil (org.apache.accumulo.core.summary.SummarizerConfigurationUtil)1 NoSuchScanIDException (org.apache.accumulo.core.tabletserver.thrift.NoSuchScanIDException)1 SummarySession (org.apache.accumulo.tserver.session.SummarySession)1 Text (org.apache.hadoop.io.Text)1