apache / druid

Apache Druid: a high performance real-time analytics database.
https://druid.apache.org/
Apache License 2.0
13.46k stars 3.7k forks source link

horrible histogram post-aggregation #6853

Closed quenlang closed 5 years ago

quenlang commented 5 years ago

Hello. @jon-wei I am confused with perform a druid histogram query. The request body of histogram query like this :

  "queryType": "timeseries",
  "dataSource": {
    "type": "table",
    "name": "BRS_PAGE_HOUR"
  },
  "intervals": {
    "type": "intervals",
    "intervals": [
      "2018-11-14T11:42:00/2019-01-14T11:42:00"
    ]
  },
  "descending": false,
  "virtualColumns": [],
  "filter": {
    "type": "and",
    "fields": [
      {
        "type": "selector",
        "dimension": "browser_application_id",
        "value": "2",
        "extractionFn": null
      },
      {
        "type": "selector",
        "dimension": "host",
        "value": "10.111.243.10:7001",
        "extractionFn": null
      },
      {
        "type": "selector",
        "dimension": "uri",
        "value": "/PMS/framework/popWindow.html",
        "extractionFn": null
      },
      {
        "type": "bound",
        "dimension": "count",
        "lower": "0",
        "upper": null,
        "lowerStrict": true,
        "upperStrict": false,
        "extractionFn": null,
        "ordering": {
          "type": "lexicographic"
        }
      }
    ]
  },
  "granularity": {
    "type": "all"
  },
  "aggregations": [
    {
      "type": "longSum",
      "name": "count_total",
      "fieldName": "count",
      "expression": null
    },
    {
      "type": "approxHistogramFold",
      "name": "first_paint_time_histogram_total",
      "fieldName": "first_paint_time_histogram",
      "resolution": 50,
      "numBuckets": 9,
      "lowerLimit": 0,
      "upperLimit": "Infinity"
    }
  ],
  "postAggregations": [
    {
      "type": "customBuckets",
      "name": "performance_histogram",
      "fieldName": "first_paint_time_histogram_total",
      "breaks": [
        0,
        200,
        400,
        600,
        800,
        1000,
        1200,
        1400,
        "Infinity"
      ]
    },
    { "type" : "min", "name" : "min_value", "fieldName" : "first_paint_time_histogram_total"},
    { "type" : "max", "name" : "max_value", "fieldName" : "first_paint_time_histogram_total"}
  ],
  "context": {
    "skipEmptyBuckets": "true"
  }
}

The first query result like this :

[ {
  "timestamp" : "2018-12-14T02:00:00.000Z",
  "result" : {
    "performance_histogram" : {
      "breaks" : [ 0.0, 200.0, 400.0, 600.0, 800.0, 1000.0, 1200.0, 1400.0, "Infinity" ],
      "counts" : [ 339.6748046875, 96.61546325683594, 70.65382385253906, 44.69218063354492, 18.730541229248047, 0.9215729236602783, 0.43618109822273254, 9.275420188903809 ]
    },
    "min_value" : 0.0,
    "count_total" : 581,
    "first_paint_time_histogram_total" : {
      "breaks" : [ -4443.75, 0.0, 4443.75, 8887.5, 13331.25, 17775.0, 22218.75, 26662.5, 31106.25, 35550.0 ],
      "counts" : [ 0.0, 576.6718139648438, 1.3282045125961304, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 ]
    },
    "max_value" : 35550.0
  }
} ]

The second query result like this :

[ {
  "timestamp" : "2018-12-14T02:00:00.000Z",
  "result" : {
    "performance_histogram" : {
      "breaks" : [ 0.0, 200.0, 400.0, 600.0, 800.0, 1000.0, 1200.0, 1400.0, "Infinity" ],
      "counts" : [ 550.0, 4.094977378845215, 6.259572505950928, 2.6454498767852783, 1.0, 1.0, 0.0, 9.0 ]
    },
    "min_value" : 0.0,
    "count_total" : 581,
    "first_paint_time_histogram_total" : {
      "breaks" : [ -4443.75, 0.0, 4443.75, 8887.5, 13331.25, 17775.0, 22218.75, 26662.5, 31106.25, 35550.0 ],
      "counts" : [ 7.0, 570.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 ]
    },
    "max_value" : 35550.0
  } 
} ]

Then i increase the resolution to 500 and the result always like this :

[ {
  "timestamp" : "2018-12-14T02:00:00.000Z",
  "result" : {
    "performance_histogram" : {
      "breaks" : [ 0.0, 200.0, 400.0, 600.0, 800.0, 1000.0, 1200.0, 1400.0, "Infinity" ],
      "counts" : [ 318.0, 79.0, 14.0, 2.0, 1.0, 1.0, 0.0, 9.0 ]
    },
    "min_value" : 0.0,
    "count_total" : 581,
    "first_paint_time_histogram_total" : {
      "breaks" : [ -4443.75, 0.0, 4443.75, 8887.5, 13331.25, 17775.0, 22218.75, 26662.5, 31106.25, 35550.0 ],
      "counts" : [ 157.0, 420.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 ]
    },
    "max_value" : 35550.0
  }
} ]

Even though i have known results can vary for the same query from docs, but i am confused why the first bucket of first_paint_time_histogram_total was [negative number, 0] and its count also>0. The min value of the column was 0. And the [0.0, 200.0] bucket which is the first bucket of custom buckets looks like not include count of the first bucket of first_paint_time_histogram_total.

My ingestion spce file define the histogram column like this:

            ...
            {
                "name": "first_paint_time_histogram",
                "fieldName": "first_paint_time",
                "type": "approxHistogramFold",
                "resolution": 50,
                "numBuckets": 7,
                "lowerLimit": 0
            },
            ...

And the data of the column like this:

mysql> select first_paint_time from BRS_PAGE_HOUR where __time>='2019-01-13 00:00:00' and browser_application_id='9' limit 100;
+------------------+
| first_paint_time |
+------------------+
|              325 |
|              147 |
|              653 |
|              189 |
|              147 |
|              422 |
|              413 |
|               17 |
|              238 |
|              423 |
|              150 |
|              449 |
|              149 |
|              345 |
|             1661 |
|             2600 |
|              427 |
|              209 |
|             1622 |
|                0 |
|                0 |
|               12 |
|              153 |
|              144 |
|              572 |
|              112 |
|               48 |
|             2831 |
|              493 |
|              577 |
|              164 |
|              360 |
|              234 |
|              368 |
|              408 |
|              108 |
|              241 |
|             2903 |
|             2923 |
|             1921 |
|              343 |
|            12363 |
|              616 |
|              356 |
|              564 |
|              266 |
|              309 |
|              418 |
|              284 |
|              247 |
|             1858 |
|             1488 |
|               15 |
|             1710 |
|              185 |
|              128 |
|              267 |
|              379 |
|              526 |
|              121 |
|              490 |
|              540 |
|              132 |
|              251 |
|              119 |
|              505 |
|              200 |
|             3715 |
|              347 |
|               33 |
|               18 |
|             1140 |
|              371 |
|              232 |
|              300 |
|              304 |
|              189 |
|              373 |
|              297 |
|              302 |
|              257 |
|              401 |
|             2058 |
|              389 |
|              432 |
|              359 |
|              822 |
|              409 |
|             2992 |
|             1045 |
|              386 |
|             1469 |
|             6715 |
|             1046 |
|              389 |
|             1052 |
|              196 |
|             1050 |
|              390 |
|              454 |
+------------------+
100 rows in set (0.07 sec)

Do you have any advices ? Thank you so much.

jon-wei commented 5 years ago

@quenlang Can you try using the quantiles sketch aggregator instead?

http://druid.io/docs/latest/development/extensions-core/datasketches-quantiles.html

quenlang commented 5 years ago

@jon-wei Can i use this feature in druid 0.12.3? It just looks like a new feature in druid 0.13.0.

jon-wei commented 5 years ago

It's in 0.12.3, but the docs were added later in 0.13.0: https://github.com/apache/incubator-druid/tree/0.12.3/extensions-core/datasketches

quenlang commented 5 years ago

@jon-wei Thanks for quick reply. I had upgraded my cluster to 0.13.0. But there was another problem when the task goes to hand off segment end of the segment granularity window as below:

2019-01-16T02:51:54,690 WARN [appenderator_merge_0] org.apache.druid.segment.realtime.appenderator.AppenderatorImpl - Failed to push merged index for segment[BRS_PAGE_MIN_2019-01-15T14:00:00.000Z_2019-01-15T15:00:00.000Z_2019-01-15T14:00:01.151Z].
org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
    at org.apache.druid.query.aggregation.AggregatorFactory.makeAggregateCombiner(AggregatorFactory.java:79) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.query.aggregation.AggregatorFactory.makeNullableAggregateCombiner(AggregatorFactory.java:93) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.lambda$new$1(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at java.util.Arrays.setAll(Arrays.java:4698) ~[?:1.8.0_60]
    at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.<init>(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.lambda$merge$2(IndexMergerV9.java:909) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1031) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:179) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
    at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) [guava-16.0.1.jar:?]
    at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) [guava-16.0.1.jar:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
2019-01-16T02:51:54,693 ERROR [publish-0] org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner - Error while publishing segments for sequence[SequenceMetadata{sequenceName='index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_0', sequenceId=0, startOffsets={0=10213925, 1=10824117}, endOffsets={0=10480548, 1=11090740}, assignments=[], sentinel=false, checkpointed=true}]
org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
    at org.apache.druid.query.aggregation.AggregatorFactory.makeAggregateCombiner(AggregatorFactory.java:79) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.query.aggregation.AggregatorFactory.makeNullableAggregateCombiner(AggregatorFactory.java:93) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.lambda$new$1(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at java.util.Arrays.setAll(Arrays.java:4698) ~[?:1.8.0_60]
    at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.<init>(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.lambda$merge$2(IndexMergerV9.java:909) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1031) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:179) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
    at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) ~[guava-16.0.1.jar:?]
    at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) [guava-16.0.1.jar:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
2019-01-16T02:51:54,696 INFO [task-runner-0-priority-0] org.apache.druid.segment.realtime.appenderator.AppenderatorImpl - Shutting down immediately...
2019-01-16T02:51:54,698 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T21:00:00.000Z_2019-01-15T22:00:00.000Z_2019-01-15T21:00:01.035Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,699 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T14:00:00.000Z_2019-01-15T15:00:00.000Z_2019-01-15T14:00:01.151Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,700 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T17:00:00.000Z_2019-01-15T18:00:00.000Z_2019-01-15T17:00:00.234Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,701 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T12:00:00.000Z_2019-01-15T13:00:00.000Z_2019-01-15T12:00:00.755Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,702 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T19:00:00.000Z_2019-01-15T20:00:00.000Z_2019-01-15T19:00:00.636Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,703 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T13:00:00.000Z_2019-01-15T14:00:00.000Z_2019-01-15T13:00:00.423Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,704 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-16T01:00:00.000Z_2019-01-16T02:00:00.000Z_2019-01-16T01:00:00.647Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,705 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T11:00:00.000Z_2019-01-15T12:00:00.000Z_2019-01-15T11:00:01.007Z_2] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,706 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T22:00:00.000Z_2019-01-15T23:00:00.000Z_2019-01-15T22:00:00.507Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,707 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T16:00:00.000Z_2019-01-15T17:00:00.000Z_2019-01-15T16:00:00.726Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,707 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T23:00:00.000Z_2019-01-16T00:00:00.000Z_2019-01-15T23:00:01.139Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,708 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-16T02:00:00.000Z_2019-01-16T03:00:00.000Z_2019-01-16T02:00:00.301Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,709 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T18:00:00.000Z_2019-01-15T19:00:00.000Z_2019-01-15T18:00:00.981Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,709 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T20:00:00.000Z_2019-01-15T21:00:00.000Z_2019-01-15T20:00:04.780Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,710 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-16T00:00:00.000Z_2019-01-16T01:00:00.000Z_2019-01-16T00:00:00.899Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,710 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T15:00:00.000Z_2019-01-15T16:00:00.000Z_2019-01-15T15:00:00.882Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,710 INFO [task-runner-0-priority-0] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,737 INFO [task-runner-0-priority-0] org.apache.druid.segment.realtime.firehose.ServiceAnnouncingChatHandlerProvider - Unregistering chat handler[index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd]
2019-01-16T02:51:54,737 INFO [task-runner-0-priority-0] org.apache.druid.curator.discovery.CuratorDruidNodeAnnouncer - Unannouncing [DiscoveryDruidNode{druidNode=DruidNode{serviceName='druid/middleManager', host='apm3-c1-druid-001.txgz.tingyun.com', port=-1, plaintextPort=8108, enablePlaintextPort=true, tlsPort=-1, enableTlsPort=false}, nodeType='peon', services={dataNodeService=DataNodeService{tier='_default_tier', maxSize=0, type=indexer-executor, priority=0}, lookupNodeService=LookupNodeService{lookupTier='__default'}}}].
2019-01-16T02:51:54,737 INFO [task-runner-0-priority-0] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/internal-discovery/peon/apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,747 INFO [task-runner-0-priority-0] org.apache.druid.curator.discovery.CuratorDruidNodeAnnouncer - Unannounced [DiscoveryDruidNode{druidNode=DruidNode{serviceName='druid/middleManager', host='apm3-c1-druid-001.txgz.tingyun.com', port=-1, plaintextPort=8108, enablePlaintextPort=true, tlsPort=-1, enableTlsPort=false}, nodeType='peon', services={dataNodeService=DataNodeService{tier='_default_tier', maxSize=0, type=indexer-executor, priority=0}, lookupNodeService=LookupNodeService{lookupTier='__default'}}}].
2019-01-16T02:51:54,747 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.CuratorDataSegmentServerAnnouncer - Unannouncing self[DruidServerMetadata{name='apm3-c1-druid-001.txgz.tingyun.com:8108', hostAndPort='apm3-c1-druid-001.txgz.tingyun.com:8108', hostAndTlsPort='null', maxSize=0, tier='_default_tier', type=indexer-executor, priority=0}] at [/druid/announcements/apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,747 INFO [task-runner-0-priority-0] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/announcements/apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,759 ERROR [task-runner-0-priority-0] org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner - Encountered exception while running task.
java.util.concurrent.ExecutionException: org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
    at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) ~[guava-16.0.1.jar:?]
    at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) ~[guava-16.0.1.jar:?]
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) ~[guava-16.0.1.jar:?]
    at org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner.runInternal(IncrementalPublishingKafkaIndexTaskRunner.java:661) ~[druid-kafka-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner.run(IncrementalPublishingKafkaIndexTaskRunner.java:232) [druid-kafka-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.indexing.kafka.KafkaIndexTask.run(KafkaIndexTask.java:210) [druid-kafka-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:421) [druid-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:393) [druid-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_60]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
Caused by: org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
    at org.apache.druid.query.aggregation.AggregatorFactory.makeAggregateCombiner(AggregatorFactory.java:79) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.query.aggregation.AggregatorFactory.makeNullableAggregateCombiner(AggregatorFactory.java:93) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.lambda$new$1(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at java.util.Arrays.setAll(Arrays.java:4698) ~[?:1.8.0_60]
    at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.<init>(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.lambda$merge$2(IndexMergerV9.java:909) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1031) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:179) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
    at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
    at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) ~[guava-16.0.1.jar:?]
    at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) ~[guava-16.0.1.jar:?]
    ... 3 more
2019-01-16T02:51:54,765 INFO [task-runner-0-priority-0] org.apache.druid.indexing.overlord.TaskRunnerUtils - Task [index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd] status changed to [FAILED].
2019-01-16T02:51:54,767 INFO [task-runner-0-priority-0] org.apache.druid.indexing.worker.executor.ExecutorLifecycle - Task completed with status: {
  "id" : "index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd",
  "status" : "FAILED",
  "duration" : 3601213,
  "errorMsg" : "java.util.concurrent.ExecutionException: org.apache.druid.java.util.common.UOE: [org.apache.druid.qu..."
}
2019-01-16T02:51:54,770 INFO [main] org.apache.druid.cli.CliPeon - Thread [Thread[pool-5-thread-2,5,main]] is non daemon.
2019-01-16T02:51:54,770 INFO [main] org.apache.druid.cli.CliPeon - Thread [Thread[pool-5-thread-3,5,main]] is non daemon.
2019-01-16T02:51:54,770 INFO [main] org.apache.druid.cli.CliPeon - Thread [Thread[pool-5-thread-1,5,main]] is non daemon.
2019-01-16T02:51:54,772 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.server.listener.announcer.ListenerResourceAnnouncer.stop()] on object[org.apache.druid.query.lookup.LookupResourceListenerAnnouncer@23708f14].
2019-01-16T02:51:54,772 INFO [main] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/listeners/lookups/__default/http:apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,778 INFO [main] org.apache.druid.server.listener.announcer.ListenerResourceAnnouncer - Unannouncing start time on [/druid/listeners/lookups/__default/http:apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,778 INFO [main] org.apache.druid.server.initialization.jetty.JettyServerModule - Stopping Jetty Server...
2019-01-16T02:51:54,781 INFO [main] org.eclipse.jetty.server.AbstractConnector - Stopped ServerConnector@57839834{HTTP/1.1,[http/1.1]}{0.0.0.0:8108}
2019-01-16T02:51:54,781 INFO [main] org.eclipse.jetty.server.session - node0 Stopped scavenging
2019-01-16T02:51:54,783 INFO [main] org.eclipse.jetty.server.handler.ContextHandler - Stopped o.e.j.s.ServletContextHandler@27b490de{/,null,UNAVAILABLE}
2019-01-16T02:51:54,785 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.indexing.worker.executor.ExecutorLifecycle.stop() throws java.lang.Exception] on object[org.apache.druid.indexing.worker.executor.ExecutorLifecycle@1857fe6c].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner.stop()] on object[org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner@61c87f1b].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner - Starting graceful shutdown of task[index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner - Stopping gracefully (status: [PUBLISHING])
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner - Graceful shutdown of task[index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd] finished in 0ms.
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.overlord.TaskRunnerUtils - Task [index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd] status changed to [FAILED].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.curator.announcement.Announcer.stop()] on object[org.apache.druid.curator.announcement.Announcer@d76099a].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.curator.announcement.Announcer - Stopping announcer

The ingestion spec :

...
           {
                "name": "first_paint_time_sketch",
                "fieldName": "first_paint_time",
                "type": "quantilesDoublesSketch"
            },
...

Some ideas of this exception?

quenlang commented 5 years ago

@jon-wei As the data ingested into druid which was stayed at the memory or local disk of middleManager peon task before handing off to deep storage, so i performed a query which will be sent to peon task. The query like this:

{
  "queryType": "timeseries",
  "dataSource": {
    "type": "table",
    "name": "sketch_1"
  },
  "intervals": {
    "type": "intervals",
    "intervals": [
      "2019-01-16T00:30:00/2019-01-17T00:00:00"
    ]
  },
  "descending": false,
  "virtualColumns": [],
  "granularity": {
    "type": "all"
  },
  "aggregations": [
    {
      "type": "longSum",
      "name": "count_total",
      "fieldName": "count",
      "expression": null
    },
    {
      "type": "approxHistogramFold",
      "name": "dns_time_histogram",
      "fieldName": "dns_time_histogram",
      "resolution": 50,
      "numBuckets": 7,
      "lowerLimit": 0
    },                                                                                                              [13/1830]
    {
      "type": "quantilesDoublesSketch",
      "name": "dns_time_sketch",
      "fieldName": "dns_time_sketch",
      "k": 128
    }
  ],
  "postAggregations": [
    {
      "type": "customBuckets",
      "name": "performance_histogram",
      "fieldName": "dns_time_histogram",
      "breaks": [0, 200.0, 400.0, 600.0, 800.0, 1000.0, 1200.0, 1400.0, "Infinity"]
    },
    {
      "type" : "quantiles",
      "name" : "histogram_quantile",
      "fieldName" : "dns_time_histogram",
      "probabilities" : [0.50, 0.75, 0.90, 0.95]
    },
    {
      "type"  : "quantilesDoublesSketchToHistogram",
      "name": "performance_sketch",
      "field": {
        "type": "fieldAccess",
        "fieldName": "dns_time_sketch"
      },
      "splitPoints" : [200, 400, 600, 800, 1000, 1200, 1400]
    },
    {
      "type"  : "quantilesDoublesSketchToQuantiles",
      "name": "sketch_quantile",
      "field": {
        "type": "fieldAccess",
        "fieldName": "dns_time_sketch"
      },
      "fractions" : [0.50, 0.75, 0.90, 0.95]
    }
  ],
  "context": {
    "skipEmptyBuckets": "true"
  }
}

In order to compare the accuracy of approximate histogram and quantiles sketch so i defined two aggregation methods in the same query. And the result as below:

[ {
  "timestamp" : "2019-01-16T02:01:00.000Z",
  "result" : {
    "performance_histogram" : {
      "breaks" : [ 0.0, 200.0, 400.0, 600.0, 800.0, 1000.0, 1200.0, 1400.0, "Infinity" ],
      "counts" : [ 5.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 3.0 ]
    },
    "histogram_quantile" : {
      "probabilities" : [ 0.5, 0.75, 0.9, 0.95 ],
      "quantiles" : [ 99.0, 1150.0, 1772.0, 1886.0 ],
      "min" : 0.0,
      "max" : 2000.0
    },
    "count_total" : 10,
    "dns_time_histogram" : {
      "breaks" : [ -333.3333435058594, 0.0, 333.3333435058594, 666.6666870117188, 1000.0, 1333.3333740234375, 1666.666748046875, 2000.0 ],
      "counts" : [ 1.0, 5.0, 1.0, 0.0, 0.0, 0.0, 3.0 ]
    },
    "sketch_quantile" : [ 100.0, 1700.0, 2000.0, 2000.0 ],
    "dns_time_sketch" : 10,
    "performance_sketch" : [ 6.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 3.0 ]
  }
} ]

The orignal row data which i wrote to kafka, include 11 rows as below:

{"timestamp":1547604098000,"uid":1,"name":"zjk","dns_time":0.0,"count":1}
{"timestamp":1547604098000,"uid":1,"name":"zjk","dns_time":99.0,"count":1}
{"timestamp":1547604158000,"uid":2,"name":"quen","dns_time":100.0,"count":1}
{"timestamp":1547604158000,"uid":2,"name":"quen","dns_time":600.0,"count":1}
{"timestamp":1547604158000,"uid":3,"name":"quen","dns_time":2000.0,"count":1}
{"timestamp":1547604218000,"uid":4,"name":"zjk","dns_time":5.0,"count":1}
{"timestamp":1547604218000,"uid":5,"name":"zjk","dns_time":20.0,"count":1}
{"timestamp":1547604218000,"uid":6,"name":"zjk","dns_time":2.0,"count":1}
{"timestamp":1547604218000,"uid":7,"name":"zjk","dns_time":1772.0,"count":1}
{"timestamp":1547604218000,"uid":8,"name":"zjk","dns_time":1700.0,"count":1}
{"timestamp":1547604218000,"uid":9,"name":"zjk","dns_time":,300.0"count":1n}

Also i calculated the quantiles of [0.50, 0.75, 0.90, 0.95] and the histograms of [ 0.0, 200.0, 400.0, 600.0, 800.0, 1000.0, 1200.0, 1400.0, "Infinity" ] by myself. They were [100, 1150, 1772, 1886] and [ 6.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 3.0 ].

Compared the actual result with the query result, i found the quantile query of approximate histogram was more accurate than quantiles sketch, but for the histogram query, quantiles sketch was win.

Can you tell me more about why the the quantile query of approximate histogram was more accurate thanquantiles sketch?

quenlang commented 5 years ago

@jon-wei Thanks for quick reply. I had upgraded my cluster to 0.13.0. But there was another problem when the task goes to hand off segment end of the segment granularity window as below:

2019-01-16T02:51:54,690 WARN [appenderator_merge_0] org.apache.druid.segment.realtime.appenderator.AppenderatorImpl - Failed to push merged index for segment[BRS_PAGE_MIN_2019-01-15T14:00:00.000Z_2019-01-15T15:00:00.000Z_2019-01-15T14:00:01.151Z].
org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
  at org.apache.druid.query.aggregation.AggregatorFactory.makeAggregateCombiner(AggregatorFactory.java:79) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.query.aggregation.AggregatorFactory.makeNullableAggregateCombiner(AggregatorFactory.java:93) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.lambda$new$1(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at java.util.Arrays.setAll(Arrays.java:4698) ~[?:1.8.0_60]
  at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.<init>(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.lambda$merge$2(IndexMergerV9.java:909) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1031) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:179) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
  at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) [guava-16.0.1.jar:?]
  at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) [guava-16.0.1.jar:?]
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60]
  at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
2019-01-16T02:51:54,693 ERROR [publish-0] org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner - Error while publishing segments for sequence[SequenceMetadata{sequenceName='index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_0', sequenceId=0, startOffsets={0=10213925, 1=10824117}, endOffsets={0=10480548, 1=11090740}, assignments=[], sentinel=false, checkpointed=true}]
org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
  at org.apache.druid.query.aggregation.AggregatorFactory.makeAggregateCombiner(AggregatorFactory.java:79) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.query.aggregation.AggregatorFactory.makeNullableAggregateCombiner(AggregatorFactory.java:93) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.lambda$new$1(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at java.util.Arrays.setAll(Arrays.java:4698) ~[?:1.8.0_60]
  at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.<init>(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.lambda$merge$2(IndexMergerV9.java:909) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1031) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:179) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
  at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) ~[guava-16.0.1.jar:?]
  at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) [guava-16.0.1.jar:?]
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60]
  at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
2019-01-16T02:51:54,696 INFO [task-runner-0-priority-0] org.apache.druid.segment.realtime.appenderator.AppenderatorImpl - Shutting down immediately...
2019-01-16T02:51:54,698 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T21:00:00.000Z_2019-01-15T22:00:00.000Z_2019-01-15T21:00:01.035Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,699 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T14:00:00.000Z_2019-01-15T15:00:00.000Z_2019-01-15T14:00:01.151Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,700 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T17:00:00.000Z_2019-01-15T18:00:00.000Z_2019-01-15T17:00:00.234Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,701 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T12:00:00.000Z_2019-01-15T13:00:00.000Z_2019-01-15T12:00:00.755Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,702 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T19:00:00.000Z_2019-01-15T20:00:00.000Z_2019-01-15T19:00:00.636Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,703 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T13:00:00.000Z_2019-01-15T14:00:00.000Z_2019-01-15T13:00:00.423Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,704 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-16T01:00:00.000Z_2019-01-16T02:00:00.000Z_2019-01-16T01:00:00.647Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,705 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T11:00:00.000Z_2019-01-15T12:00:00.000Z_2019-01-15T11:00:01.007Z_2] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,706 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T22:00:00.000Z_2019-01-15T23:00:00.000Z_2019-01-15T22:00:00.507Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,707 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T16:00:00.000Z_2019-01-15T17:00:00.000Z_2019-01-15T16:00:00.726Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,707 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T23:00:00.000Z_2019-01-16T00:00:00.000Z_2019-01-15T23:00:01.139Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,708 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-16T02:00:00.000Z_2019-01-16T03:00:00.000Z_2019-01-16T02:00:00.301Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,709 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T18:00:00.000Z_2019-01-15T19:00:00.000Z_2019-01-15T18:00:00.981Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,709 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T20:00:00.000Z_2019-01-15T21:00:00.000Z_2019-01-15T20:00:04.780Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,710 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-16T00:00:00.000Z_2019-01-16T01:00:00.000Z_2019-01-16T00:00:00.899Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,710 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.BatchDataSegmentAnnouncer - Unannouncing segment[BRS_PAGE_MIN_2019-01-15T15:00:00.000Z_2019-01-15T16:00:00.000Z_2019-01-15T15:00:00.882Z] at path[/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,710 INFO [task-runner-0-priority-0] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/segments/apm3-c1-druid-001.txgz.tingyun.com:8108/apm3-c1-druid-001.txgz.tingyun.com:8108_indexer-executor__default_tier_2019-01-16T01:51:54.334Z_92b4e8e5109a49deb22db797a999b96f0]
2019-01-16T02:51:54,737 INFO [task-runner-0-priority-0] org.apache.druid.segment.realtime.firehose.ServiceAnnouncingChatHandlerProvider - Unregistering chat handler[index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd]
2019-01-16T02:51:54,737 INFO [task-runner-0-priority-0] org.apache.druid.curator.discovery.CuratorDruidNodeAnnouncer - Unannouncing [DiscoveryDruidNode{druidNode=DruidNode{serviceName='druid/middleManager', host='apm3-c1-druid-001.txgz.tingyun.com', port=-1, plaintextPort=8108, enablePlaintextPort=true, tlsPort=-1, enableTlsPort=false}, nodeType='peon', services={dataNodeService=DataNodeService{tier='_default_tier', maxSize=0, type=indexer-executor, priority=0}, lookupNodeService=LookupNodeService{lookupTier='__default'}}}].
2019-01-16T02:51:54,737 INFO [task-runner-0-priority-0] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/internal-discovery/peon/apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,747 INFO [task-runner-0-priority-0] org.apache.druid.curator.discovery.CuratorDruidNodeAnnouncer - Unannounced [DiscoveryDruidNode{druidNode=DruidNode{serviceName='druid/middleManager', host='apm3-c1-druid-001.txgz.tingyun.com', port=-1, plaintextPort=8108, enablePlaintextPort=true, tlsPort=-1, enableTlsPort=false}, nodeType='peon', services={dataNodeService=DataNodeService{tier='_default_tier', maxSize=0, type=indexer-executor, priority=0}, lookupNodeService=LookupNodeService{lookupTier='__default'}}}].
2019-01-16T02:51:54,747 INFO [task-runner-0-priority-0] org.apache.druid.server.coordination.CuratorDataSegmentServerAnnouncer - Unannouncing self[DruidServerMetadata{name='apm3-c1-druid-001.txgz.tingyun.com:8108', hostAndPort='apm3-c1-druid-001.txgz.tingyun.com:8108', hostAndTlsPort='null', maxSize=0, tier='_default_tier', type=indexer-executor, priority=0}] at [/druid/announcements/apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,747 INFO [task-runner-0-priority-0] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/announcements/apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,759 ERROR [task-runner-0-priority-0] org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner - Encountered exception while running task.
java.util.concurrent.ExecutionException: org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
  at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) ~[guava-16.0.1.jar:?]
  at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) ~[guava-16.0.1.jar:?]
  at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) ~[guava-16.0.1.jar:?]
  at org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner.runInternal(IncrementalPublishingKafkaIndexTaskRunner.java:661) ~[druid-kafka-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner.run(IncrementalPublishingKafkaIndexTaskRunner.java:232) [druid-kafka-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.indexing.kafka.KafkaIndexTask.run(KafkaIndexTask.java:210) [druid-kafka-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:421) [druid-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:393) [druid-indexing-service-0.13.0-incubating.jar:0.13.0-incubating]
  at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_60]
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_60]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_60]
  at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
Caused by: org.apache.druid.java.util.common.UOE: [org.apache.druid.query.aggregation.datasketches.quantiles.DoublesSketchAggregatorFactory] does not implement makeAggregateCombiner()
  at org.apache.druid.query.aggregation.AggregatorFactory.makeAggregateCombiner(AggregatorFactory.java:79) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.query.aggregation.AggregatorFactory.makeNullableAggregateCombiner(AggregatorFactory.java:93) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.lambda$new$1(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at java.util.Arrays.setAll(Arrays.java:4698) ~[?:1.8.0_60]
  at org.apache.druid.segment.RowCombiningTimeAndDimsIterator.<init>(RowCombiningTimeAndDimsIterator.java:120) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.lambda$merge$2(IndexMergerV9.java:909) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1031) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:179) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:914) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:832) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:810) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:719) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
  at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:623) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
  at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) ~[guava-16.0.1.jar:?]
  at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) ~[guava-16.0.1.jar:?]
  ... 3 more
2019-01-16T02:51:54,765 INFO [task-runner-0-priority-0] org.apache.druid.indexing.overlord.TaskRunnerUtils - Task [index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd] status changed to [FAILED].
2019-01-16T02:51:54,767 INFO [task-runner-0-priority-0] org.apache.druid.indexing.worker.executor.ExecutorLifecycle - Task completed with status: {
  "id" : "index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd",
  "status" : "FAILED",
  "duration" : 3601213,
  "errorMsg" : "java.util.concurrent.ExecutionException: org.apache.druid.java.util.common.UOE: [org.apache.druid.qu..."
}
2019-01-16T02:51:54,770 INFO [main] org.apache.druid.cli.CliPeon - Thread [Thread[pool-5-thread-2,5,main]] is non daemon.
2019-01-16T02:51:54,770 INFO [main] org.apache.druid.cli.CliPeon - Thread [Thread[pool-5-thread-3,5,main]] is non daemon.
2019-01-16T02:51:54,770 INFO [main] org.apache.druid.cli.CliPeon - Thread [Thread[pool-5-thread-1,5,main]] is non daemon.
2019-01-16T02:51:54,772 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.server.listener.announcer.ListenerResourceAnnouncer.stop()] on object[org.apache.druid.query.lookup.LookupResourceListenerAnnouncer@23708f14].
2019-01-16T02:51:54,772 INFO [main] org.apache.druid.curator.announcement.Announcer - unannouncing [/druid/listeners/lookups/__default/http:apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,778 INFO [main] org.apache.druid.server.listener.announcer.ListenerResourceAnnouncer - Unannouncing start time on [/druid/listeners/lookups/__default/http:apm3-c1-druid-001.txgz.tingyun.com:8108]
2019-01-16T02:51:54,778 INFO [main] org.apache.druid.server.initialization.jetty.JettyServerModule - Stopping Jetty Server...
2019-01-16T02:51:54,781 INFO [main] org.eclipse.jetty.server.AbstractConnector - Stopped ServerConnector@57839834{HTTP/1.1,[http/1.1]}{0.0.0.0:8108}
2019-01-16T02:51:54,781 INFO [main] org.eclipse.jetty.server.session - node0 Stopped scavenging
2019-01-16T02:51:54,783 INFO [main] org.eclipse.jetty.server.handler.ContextHandler - Stopped o.e.j.s.ServletContextHandler@27b490de{/,null,UNAVAILABLE}
2019-01-16T02:51:54,785 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.indexing.worker.executor.ExecutorLifecycle.stop() throws java.lang.Exception] on object[org.apache.druid.indexing.worker.executor.ExecutorLifecycle@1857fe6c].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner.stop()] on object[org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner@61c87f1b].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner - Starting graceful shutdown of task[index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.kafka.IncrementalPublishingKafkaIndexTaskRunner - Stopping gracefully (status: [PUBLISHING])
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner - Graceful shutdown of task[index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd] finished in 0ms.
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.indexing.overlord.TaskRunnerUtils - Task [index_kafka_BRS_PAGE_MIN_0361b88dfbdfe35_dcpnbekd] status changed to [FAILED].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler - Invoking stop method[public void org.apache.druid.curator.announcement.Announcer.stop()] on object[org.apache.druid.curator.announcement.Announcer@d76099a].
2019-01-16T02:51:54,786 INFO [main] org.apache.druid.curator.announcement.Announcer - Stopping announcer

The ingestion spec :

...
           {
                "name": "first_paint_time_sketch",
                "fieldName": "first_paint_time",
                "type": "quantilesDoublesSketch"
            },
...

Some ideas of this exception?

@jon-wei I had try with druid 0.12.3 in the same scene and the task commited successfully. So is this a bug in druid 0.13.0 ?

jon-wei commented 5 years ago

I had try with druid 0.12.3 in the same scene and the task commited successfully. So is this a bug in druid 0.13.0 ?

Thanks for the report, this is a bug in 0.13.0 (#6877).

Compared the actual result with the query result, i found the quantile query of approximate histogram was more accurate than quantiles sketch, but for the histogram query, quantiles sketch was win.

Can you tell me more about why the the quantile query of approximate histogram was more accurate thanquantiles sketch?

Regarding the question on sketch accuracy, I'm not too sure myself, but perhaps one of the datasketches folks can comment? @AlexanderSaydakov @leerho

quenlang commented 5 years ago

Regarding the question on sketch accuracy, I'm not too sure myself, but perhaps one of the datasketches folks can comment? @AlexanderSaydakov @leerho @jon-wei Thanks! @AlexanderSaydakov @leerho Do you have any ideas for the question on sketch accuracy?

AlexanderSaydakov commented 5 years ago

It is hard to follow your example. Let's see if I understand it correctly. You take the following 11 values: 0.0 99.0 100.0 600.0 2000.0 5.0 20.0 2.0 1772.0 1700.0 300.0 You expect 0.5, 0.75, 0.9 and 0.95 quantiles to be 100, 1150, 1772 and 1886 respectively. Why? Some values you expect were not in the input. Do you expect some sort of interpolation? Our quantiles sketch does not do anything like that. It does not even assume they are numbers. The only requirement for the algorithm is the "less than" relation between the values. To calculate, say, 0.75 quantile exactly one needs to sort the above array and see what value has the normalized rank of 0.75, that is 75% of all values should be less than that value. The value 1700 has 8 values below it, so its rank is 8/11 or about 0.73. So our sketch returns 1700 as the best approximation to 0.75 quantile.

quenlang commented 5 years ago

It is hard to follow your example. Let's see if I understand it correctly.

@AlexanderSaydakov Thanks for quick reply ! Yes, you're right. I had sorted the 11 values asc for interpolation and i got [100, 1150, 1772, 1886] finally. I see the mechanism of quantiles sketch under your explaining. Thank you so much. And best wishes for @jon-wei too !

leerho commented 5 years ago

@quenlang

There are very good reasons why it is not a good idea for a quantiles (or histogram) sketch to "interpolate" between actual values in the data. Fundamentally, in order for the sketch to be independent of the input data distribution, it cannot make any assumptions about what that distribution might be. And, in order to "interpolate", one must make assumptions about the input data distribution. For example, interpolating using linear, power-law, Gaussian, or discontinuous step distributions would produce wildly different results. Therefore it is best to not to make any assumptions about the input data distribution and only return values actually sampled from the real data.

quenlang commented 5 years ago

@leerho That is great ! Thanks for quick reply.