private void addIndexFilter(final ReaderParams<T> params, final FilterList filterList) { final List<MultiDimensionalCoordinateRangesArray> coords = params.getCoordinateRanges(); if ((coords != null) && !coords.isEmpty()) { final HBaseNumericIndexStrategyFilter numericIndexFilter = new HBaseNumericIndexStrategyFilter( params.getIndex().getIndexStrategy(), coords.toArray(new MultiDimensionalCoordinateRangesArray[] {})); filterList.addFilter(numericIndexFilter); } }
protected void initScanner() { final String tableName = operations.getQualifiedTableName(readerParams.getIndex().getName());
RocksDBUtils.getTablePrefix( readerParams.getInternalAdapterStore().getTypeName(adapterId), readerParams.getIndex().getName()); final Stream<CloseableIterator<GeoWaveRow>> streamIt = RocksDBUtils.getPartitions(client.getSubDirectory(), indexNamePrefix).stream().map(
default <T> Deleter<T> createDeleter(final ReaderParams<T> readerParams) { return new QueryAndDeleteByRow<>( createRowDeleter( readerParams.getIndex().getName(), readerParams.getAdapterStore(), readerParams.getInternalAdapterStore(), readerParams.getAdditionalAuthorizations()), createReader(readerParams)); }
private void addDistFilter(final ReaderParams<T> params, final FilterList filterList) { final HBaseDistributableFilter hbdFilter = new HBaseDistributableFilter(); if (wholeRowEncoding) { hbdFilter.setWholeRowFilter(true); } hbdFilter.setPartitionKeyLength(partitionKeyLength); final List<QueryFilter> distFilters = Lists.newArrayList(); distFilters.add(params.getFilter()); hbdFilter.init( distFilters, params.getIndex().getIndexModel(), params.getAdditionalAuthorizations()); filterList.addFilter(hbdFilter); }
@Override public <T> Deleter<T> createDeleter(final ReaderParams<T> readerParams) { return new QueryAndDeleteByRow<>( createRowDeleter( readerParams.getIndex().getName(), readerParams.getAdapterStore(), readerParams.getInternalAdapterStore(), readerParams.getAdditionalAuthorizations()), // intentionally don't run this reader as async because it does // not work well while simultaneously deleting rows new RocksDBReader<>(client, readerParams, false)); }
iterator = operations.getBatchedRangeRead( readerParams.getIndex().getName(), readerParams.getAdapterIds(), ranges, } else { final Select select = operations.getSelect(readerParams.getIndex().getName()); CloseableIterator<CassandraRow> results = operations.executeQuery(select); if ((readerParams.getAdapterIds() != null) && (readerParams.getAdapterIds().length > 0)) {
namespace, readerParams.getInternalAdapterStore().getTypeName(adapterId), readerParams.getIndex().getName()); final Stream<Pair<ByteArray, Iterator<ScoredEntry<GeoWaveRedisPersistedRow>>>> streamIt = RedisUtils.getPartitions(client, setNamePrefix).stream().map(p -> {
@Override public <T> RowReader<T> createReader(final ReaderParams<T> readerParams) { final SortedSet<MemoryStoreEntry> internalData = storeData.get(readerParams.getIndex().getName()); int counter = 0; List<MemoryStoreEntry> retVal = new ArrayList<>();
operations.startParallelScan(parallelScanner, readerParams.getIndex().getName()); scanner = parallelScanner; } catch (final Exception e) { try { final Iterable<Result> iterable = operations.getScannedResults(multiScanner, readerParams.getIndex().getName()); if (iterable instanceof ResultScanner) { this.scanner = (ResultScanner) iterable;
@Override public boolean apply(final MemoryStoreEntry input) { if ((readerParams.getFilter() != null) && options.isServerSideLibraryEnabled()) { final PersistentDataset<CommonIndexValue> commonData = new PersistentDataset<>(); final List<FlattenedUnreadData> unreadData = new ArrayList<>(); final List<String> commonIndexFieldNames = DataStoreUtils.getUniqueDimensionFields(readerParams.getIndex().getIndexModel()); for (final GeoWaveValue v : input.getRow().getFieldValues()) { unreadData.add( DataStoreUtils.aggregateFieldData( input.getRow(), v, commonData, readerParams.getIndex().getIndexModel(), commonIndexFieldNames)); } return readerParams.getFilter().accept( readerParams.getIndex().getIndexModel(), new DeferredReadCommonIndexedPersistenceEncoding( input.getRow().getAdapterId(), input.getRow().getDataId(), input.getRow().getPartitionKey(), input.getRow().getSortKey(), input.getRow().getNumberOfDuplicates(), commonData, unreadData.isEmpty() ? null : new UnreadFieldDataList(unreadData))); } return true; } }), readerParams.getRowTransformer());
public void bulkDelete(final ReaderParams readerParams) { final String tableName = readerParams.getIndex().getName(); final short[] adapterIds = readerParams.getAdapterIds(); Long total = 0L; final byte[] filterBytes = new HBaseNumericIndexStrategyFilter( readerParams.getIndex().getIndexStrategy(), coords.toArray(new MultiDimensionalCoordinateRangesArray[] {})).toByteArray(); final ByteString filterByteString = ByteString.copyFrom(PersistenceUtils.toBinary(readerParams.getIndex().getIndexModel())));
public HBaseReader(final ReaderParams<T> readerParams, final HBaseOperations operations) { this.readerParams = readerParams; this.recordReaderParams = null; this.operations = operations; this.partitionKeyLength = readerParams.getIndex().getIndexStrategy().getPartitionKeyLength(); this.wholeRowEncoding = readerParams.isMixedVisibility() && !readerParams.isServersideAggregation(); this.clientSideRowMerging = readerParams.isClientsideRowMerging(); this.rowTransformer = readerParams.getRowTransformer(); this.scanProvider = createScanProvider(readerParams, operations, this.clientSideRowMerging); if (readerParams.isServersideAggregation()) { this.scanner = null; scanIt = (Iterator) operations.aggregateServerSide(readerParams); } else { initScanner(); } }
@Override public <T> Deleter<T> createDeleter(final ReaderParams<T> readerParams) { return new QueryAndDeleteByRow<>( createRowDeleter( readerParams.getIndex().getName(), readerParams.getAdapterStore(), readerParams.getInternalAdapterStore(), readerParams.getAdditionalAuthorizations()), // intentionally don't run this reader as async because it does // not work well while simultaneously deleting rows new RedisReader<>( client, options.getCompression(), readerParams, gwNamespace, options.getStoreOptions().isVisibilityEnabled(), false)); }
@Override public <T> Deleter<T> createDeleter(final ReaderParams<T> readerParams) { // Currently, the InsertionIdQueryFilter is incompatible with the hbase // bulk deleter when the MultiRowRangeFilter is present. This check // prevents the situation by deferring to a single row delete. boolean isSingleRowFilter = false; if (readerParams.getFilter() instanceof InsertionIdQueryFilter) { isSingleRowFilter = true; } if (isServerSideLibraryEnabled() && !isSingleRowFilter) { return new HBaseDeleter(readerParams, this); } else { final RowDeleter rowDeleter = createRowDeleter( readerParams.getIndex().getName(), readerParams.getAdapterStore(), readerParams.getInternalAdapterStore(), readerParams.getAdditionalAuthorizations()); if (rowDeleter != null) { return new QueryAndDeleteByRow<>(rowDeleter, createReader(readerParams)); } return new QueryAndDeleteByRow<>(); } }
public <T> Iterator<GeoWaveRow> aggregateServerSide(final ReaderParams<T> readerParams) { final String tableName = readerParams.getIndex().getName(); final byte[] filterBytes = new HBaseNumericIndexStrategyFilter( readerParams.getIndex().getIndexStrategy(), coords.toArray(new MultiDimensionalCoordinateRangesArray[] {})).toByteArray(); final ByteString filterByteString = URLClassloaderUtils.toBinary(readerParams.getIndex().getIndexModel()))); DataStoreUtils.constraintsToQueryRanges( readerParams.getConstraints(), readerParams.getIndex().getIndexStrategy(), null, maxRangeDecomposition).getCompositeQueryRanges()); readerParams.getIndex().getIndexStrategy().getPartitionKeyLength());