public static TableOptimizations getTableOptimizations()

in modules/core/src/main/java/org/apache/fluo/recipes/core/combine/CqOptimizer.java [31:70]


  public static TableOptimizations getTableOptimizations(String cqId,
      SimpleConfiguration appConfig) {
    int numBuckets = CqConfigurator.getNumBucket(cqId, appConfig);
    int bpt = CqConfigurator.getBucketsPerTablet(cqId, appConfig);

    BytesBuilder rowBuilder = Bytes.builder();
    rowBuilder.append(cqId);

    List<Bytes> dataSplits = new ArrayList<>();
    for (int i = bpt; i < numBuckets; i += bpt) {
      String bucketId = CombineQueueImpl.genBucketId(i, numBuckets);
      rowBuilder.setLength(cqId.length());
      dataSplits.add(rowBuilder.append(":d:").append(bucketId).toBytes());
    }
    Collections.sort(dataSplits);

    List<Bytes> updateSplits = new ArrayList<>();
    for (int i = bpt; i < numBuckets; i += bpt) {
      String bucketId = CombineQueueImpl.genBucketId(i, numBuckets);
      rowBuilder.setLength(cqId.length());
      updateSplits.add(rowBuilder.append(":u:").append(bucketId).toBytes());
    }
    Collections.sort(updateSplits);

    Bytes dataRangeEnd = Bytes.of(cqId + CqConfigurator.DATA_RANGE_END);
    Bytes updateRangeEnd = Bytes.of(cqId + CqConfigurator.UPDATE_RANGE_END);

    List<Bytes> splits = new ArrayList<>();
    splits.add(dataRangeEnd);
    splits.add(updateRangeEnd);
    splits.addAll(dataSplits);
    splits.addAll(updateSplits);

    TableOptimizations tableOptim = new TableOptimizations();
    tableOptim.setSplits(splits);

    tableOptim.setTabletGroupingRegex(Pattern.quote(cqId + ":") + "[du]:");

    return tableOptim;
  }