Class ReindexingPartitioningRule

java.lang.Object
org.apache.druid.server.compaction.AbstractReindexingRule
org.apache.druid.server.compaction.ReindexingPartitioningRule
All Implemented Interfaces:
ReindexingRule

public class ReindexingPartitioningRule extends AbstractReindexingRule
A ReindexingRule that specifies partitioning configuration for reindexing tasks.

This rule controls how data is physically laid out into segments during reindexing, combining segment granularity (time bucketing) and partitions spec (how data within a time bucket is split). It also supports optional virtual columns for partitioning by nested column fields.

This is a non-additive rule. Multiple partitioning rules cannot be applied to the same interval.

Example inline usage:


 {
     "id": "daily-range-30d",
     "olderThan": "P30D",
     "segmentGranularity": "DAY",
     "partitionsSpec": {
       "type": "range",
       "targetRowsPerSegment": 5000000,
       "partitionDimensions": ["country", "city"]
     },
     "description": "Compact to daily segments with range partitioning for data older than 30 days"
 }
 
  • Constructor Details

    • ReindexingPartitioningRule

      public ReindexingPartitioningRule(@Nonnull String id, @Nullable String description, @Nonnull org.joda.time.Period olderThan, @Nonnull Granularity segmentGranularity, @Nonnull PartitionsSpec partitionsSpec, @Nullable VirtualColumns virtualColumns)
  • Method Details

    • syntheticRule

      public static ReindexingPartitioningRule syntheticRule(Granularity segmentGranularity, PartitionsSpec partitionsSpec, @Nullable VirtualColumns virtualColumns)
      Creates a synthetic partitioning rule used to carry default partitioning configuration for intervals not covered by any user-defined partitioning rule.

      Synthetic rules are created by org.apache.druid.indexing.compact.CascadingReindexingTemplate to represent the template's default segment granularity, partitions spec, and optional virtual columns. They use a fixed ID and zero-length period since these fields are not meaningful for synthetic rules — only the partitioning configuration (granularity, partitionsSpec, virtualColumns) is used.

    • getSegmentGranularity

      public Granularity getSegmentGranularity()
    • getPartitionsSpec

      public PartitionsSpec getPartitionsSpec()
    • getVirtualColumns

      @Nullable public VirtualColumns getVirtualColumns()
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object