Re-run Autobuild to restore CSS (#176) asf-site
authorVadim Ogievetsky <vadim@ogievetsky.com>
Wed, 22 Jun 2022 15:48:00 +0000 (08:48 -0700)
committerGitHub <noreply@github.com>
Wed, 22 Jun 2022 15:48:00 +0000 (08:48 -0700)
* Autobuild

* restore files

361 files changed:
blog/2013/11/04/querying-your-data.html
blog/2014/03/12/batch-ingestion.html
blog/2014/04/15/intro-to-pydruid.html
css/base.css [new file with mode: 0644]
css/blogs.css [new file with mode: 0644]
css/bootstrap-pure.css [new file with mode: 0644]
css/docs.css [new file with mode: 0644]
css/footer.css [new file with mode: 0644]
css/header.css [new file with mode: 0644]
css/index.css [new file with mode: 0644]
css/news-list.css [new file with mode: 0644]
css/reset.css [new file with mode: 0644]
css/syntax.css [new file with mode: 0644]
css/variables.css [new file with mode: 0644]
docs/0.13.0-incubating/dependencies/metadata-storage.html
docs/0.13.0-incubating/design/auth.html
docs/0.13.0-incubating/development/extensions-contrib/ambari-metrics-emitter.html
docs/0.13.0-incubating/development/extensions-contrib/azure.html
docs/0.13.0-incubating/development/extensions-contrib/cloudfiles.html
docs/0.13.0-incubating/development/extensions-contrib/google.html
docs/0.13.0-incubating/development/extensions-contrib/graphite.html
docs/0.13.0-incubating/development/extensions-contrib/kafka-simple.html
docs/0.13.0-incubating/development/extensions-contrib/opentsdb-emitter.html
docs/0.13.0-incubating/development/extensions-contrib/rabbitmq.html
docs/0.13.0-incubating/development/extensions-core/approximate-histograms.html
docs/0.13.0-incubating/development/extensions-core/avro.html
docs/0.13.0-incubating/development/extensions-core/bloom-filter.html
docs/0.13.0-incubating/development/extensions-core/datasketches-quantiles.html
docs/0.13.0-incubating/development/extensions-core/datasketches-theta.html
docs/0.13.0-incubating/development/extensions-core/datasketches-tuple.html
docs/0.13.0-incubating/development/extensions-core/examples.html
docs/0.13.0-incubating/development/extensions-core/kafka-eight-firehose.html
docs/0.13.0-incubating/development/extensions-core/lookups-cached-global.html
docs/0.13.0-incubating/development/extensions-core/s3.html
docs/0.13.0-incubating/development/extensions-core/stats.html
docs/0.13.0-incubating/development/extensions-core/test-stats.html
docs/0.13.0-incubating/development/geo.html
docs/0.13.0-incubating/development/modules.html
docs/0.13.0-incubating/ingestion/compaction.html
docs/0.13.0-incubating/ingestion/data-formats.html
docs/0.13.0-incubating/ingestion/delete-data.html
docs/0.13.0-incubating/ingestion/firehose.html
docs/0.13.0-incubating/ingestion/flatten-json.html
docs/0.13.0-incubating/ingestion/hadoop.html
docs/0.13.0-incubating/ingestion/ingestion-spec.html
docs/0.13.0-incubating/ingestion/locking-and-priority.html
docs/0.13.0-incubating/ingestion/misc-tasks.html
docs/0.13.0-incubating/ingestion/stream-pull.html
docs/0.13.0-incubating/ingestion/update-existing-data.html
docs/0.13.0-incubating/operations/use_sbt_to_build_fat_jar.html
docs/0.13.0-incubating/querying/aggregations.html
docs/0.13.0-incubating/querying/dimensionspecs.html
docs/0.13.0-incubating/querying/filters.html
docs/0.13.0-incubating/querying/granularities.html
docs/0.13.0-incubating/querying/groupbyquery.html
docs/0.13.0-incubating/querying/having.html
docs/0.13.0-incubating/querying/limitspec.html
docs/0.13.0-incubating/querying/post-aggregations.html
docs/0.13.0-incubating/querying/segmentmetadataquery.html
docs/0.13.0-incubating/querying/select-query.html
docs/0.13.0-incubating/querying/sql.html
docs/0.13.0-incubating/querying/timeboundaryquery.html
docs/0.13.0-incubating/querying/topnmetricspec.html
docs/0.13.0-incubating/tutorials/tutorial-compaction.html
docs/0.13.0-incubating/tutorials/tutorial-ingestion-spec.html
docs/0.13.0-incubating/tutorials/tutorial-query.html
docs/0.13.0-incubating/tutorials/tutorial-rollup.html
docs/0.13.0-incubating/tutorials/tutorial-transform-spec.html
docs/0.13.0-incubating/tutorials/tutorial-update-data.html
docs/0.14.0-incubating/dependencies/metadata-storage.html
docs/0.14.0-incubating/design/auth.html
docs/0.14.0-incubating/development/extensions-contrib/ambari-metrics-emitter.html
docs/0.14.0-incubating/development/extensions-contrib/azure.html
docs/0.14.0-incubating/development/extensions-contrib/cloudfiles.html
docs/0.14.0-incubating/development/extensions-contrib/google.html
docs/0.14.0-incubating/development/extensions-contrib/graphite.html
docs/0.14.0-incubating/development/extensions-contrib/kafka-simple.html
docs/0.14.0-incubating/development/extensions-contrib/opentsdb-emitter.html
docs/0.14.0-incubating/development/extensions-contrib/rabbitmq.html
docs/0.14.0-incubating/development/extensions-core/approximate-histograms.html
docs/0.14.0-incubating/development/extensions-core/avro.html
docs/0.14.0-incubating/development/extensions-core/bloom-filter.html
docs/0.14.0-incubating/development/extensions-core/datasketches-quantiles.html
docs/0.14.0-incubating/development/extensions-core/datasketches-theta.html
docs/0.14.0-incubating/development/extensions-core/datasketches-tuple.html
docs/0.14.0-incubating/development/extensions-core/examples.html
docs/0.14.0-incubating/development/extensions-core/kafka-eight-firehose.html
docs/0.14.0-incubating/development/extensions-core/lookups-cached-global.html
docs/0.14.0-incubating/development/extensions-core/parquet.html
docs/0.14.0-incubating/development/extensions-core/s3.html
docs/0.14.0-incubating/development/extensions-core/stats.html
docs/0.14.0-incubating/development/extensions-core/test-stats.html
docs/0.14.0-incubating/development/geo.html
docs/0.14.0-incubating/development/modules.html
docs/0.14.0-incubating/ingestion/compaction.html
docs/0.14.0-incubating/ingestion/data-formats.html
docs/0.14.0-incubating/ingestion/delete-data.html
docs/0.14.0-incubating/ingestion/firehose.html
docs/0.14.0-incubating/ingestion/flatten-json.html
docs/0.14.0-incubating/ingestion/hadoop.html
docs/0.14.0-incubating/ingestion/ingestion-spec.html
docs/0.14.0-incubating/ingestion/locking-and-priority.html
docs/0.14.0-incubating/ingestion/misc-tasks.html
docs/0.14.0-incubating/ingestion/stream-pull.html
docs/0.14.0-incubating/ingestion/update-existing-data.html
docs/0.14.0-incubating/operations/use_sbt_to_build_fat_jar.html
docs/0.14.0-incubating/querying/aggregations.html
docs/0.14.0-incubating/querying/dimensionspecs.html
docs/0.14.0-incubating/querying/filters.html
docs/0.14.0-incubating/querying/granularities.html
docs/0.14.0-incubating/querying/groupbyquery.html
docs/0.14.0-incubating/querying/having.html
docs/0.14.0-incubating/querying/hll-old.html
docs/0.14.0-incubating/querying/limitspec.html
docs/0.14.0-incubating/querying/post-aggregations.html
docs/0.14.0-incubating/querying/segmentmetadataquery.html
docs/0.14.0-incubating/querying/select-query.html
docs/0.14.0-incubating/querying/sql.html
docs/0.14.0-incubating/querying/timeboundaryquery.html
docs/0.14.0-incubating/querying/topnmetricspec.html
docs/0.14.0-incubating/tutorials/tutorial-compaction.html
docs/0.14.0-incubating/tutorials/tutorial-ingestion-spec.html
docs/0.14.0-incubating/tutorials/tutorial-query.html
docs/0.14.0-incubating/tutorials/tutorial-rollup.html
docs/0.14.0-incubating/tutorials/tutorial-transform-spec.html
docs/0.14.0-incubating/tutorials/tutorial-update-data.html
docs/0.14.1-incubating/dependencies/metadata-storage.html
docs/0.14.1-incubating/design/auth.html
docs/0.14.1-incubating/development/extensions-contrib/ambari-metrics-emitter.html
docs/0.14.1-incubating/development/extensions-contrib/azure.html
docs/0.14.1-incubating/development/extensions-contrib/cloudfiles.html
docs/0.14.1-incubating/development/extensions-contrib/google.html
docs/0.14.1-incubating/development/extensions-contrib/graphite.html
docs/0.14.1-incubating/development/extensions-contrib/kafka-simple.html
docs/0.14.1-incubating/development/extensions-contrib/opentsdb-emitter.html
docs/0.14.1-incubating/development/extensions-contrib/rabbitmq.html
docs/0.14.1-incubating/development/extensions-core/approximate-histograms.html
docs/0.14.1-incubating/development/extensions-core/avro.html
docs/0.14.1-incubating/development/extensions-core/bloom-filter.html
docs/0.14.1-incubating/development/extensions-core/datasketches-quantiles.html
docs/0.14.1-incubating/development/extensions-core/datasketches-theta.html
docs/0.14.1-incubating/development/extensions-core/datasketches-tuple.html
docs/0.14.1-incubating/development/extensions-core/examples.html
docs/0.14.1-incubating/development/extensions-core/kafka-eight-firehose.html
docs/0.14.1-incubating/development/extensions-core/lookups-cached-global.html
docs/0.14.1-incubating/development/extensions-core/parquet.html
docs/0.14.1-incubating/development/extensions-core/s3.html
docs/0.14.1-incubating/development/extensions-core/stats.html
docs/0.14.1-incubating/development/extensions-core/test-stats.html
docs/0.14.1-incubating/development/geo.html
docs/0.14.1-incubating/development/modules.html
docs/0.14.1-incubating/ingestion/compaction.html
docs/0.14.1-incubating/ingestion/data-formats.html
docs/0.14.1-incubating/ingestion/delete-data.html
docs/0.14.1-incubating/ingestion/firehose.html
docs/0.14.1-incubating/ingestion/flatten-json.html
docs/0.14.1-incubating/ingestion/hadoop.html
docs/0.14.1-incubating/ingestion/ingestion-spec.html
docs/0.14.1-incubating/ingestion/locking-and-priority.html
docs/0.14.1-incubating/ingestion/misc-tasks.html
docs/0.14.1-incubating/ingestion/stream-pull.html
docs/0.14.1-incubating/ingestion/update-existing-data.html
docs/0.14.1-incubating/operations/use_sbt_to_build_fat_jar.html
docs/0.14.1-incubating/querying/aggregations.html
docs/0.14.1-incubating/querying/dimensionspecs.html
docs/0.14.1-incubating/querying/filters.html
docs/0.14.1-incubating/querying/granularities.html
docs/0.14.1-incubating/querying/groupbyquery.html
docs/0.14.1-incubating/querying/having.html
docs/0.14.1-incubating/querying/hll-old.html
docs/0.14.1-incubating/querying/limitspec.html
docs/0.14.1-incubating/querying/post-aggregations.html
docs/0.14.1-incubating/querying/segmentmetadataquery.html
docs/0.14.1-incubating/querying/select-query.html
docs/0.14.1-incubating/querying/sql.html
docs/0.14.1-incubating/querying/timeboundaryquery.html
docs/0.14.1-incubating/querying/topnmetricspec.html
docs/0.14.1-incubating/tutorials/tutorial-compaction.html
docs/0.14.1-incubating/tutorials/tutorial-ingestion-spec.html
docs/0.14.1-incubating/tutorials/tutorial-query.html
docs/0.14.1-incubating/tutorials/tutorial-rollup.html
docs/0.14.1-incubating/tutorials/tutorial-transform-spec.html
docs/0.14.1-incubating/tutorials/tutorial-update-data.html
docs/0.14.2-incubating/dependencies/metadata-storage.html
docs/0.14.2-incubating/design/auth.html
docs/0.14.2-incubating/development/extensions-contrib/ambari-metrics-emitter.html
docs/0.14.2-incubating/development/extensions-contrib/azure.html
docs/0.14.2-incubating/development/extensions-contrib/cloudfiles.html
docs/0.14.2-incubating/development/extensions-contrib/google.html
docs/0.14.2-incubating/development/extensions-contrib/graphite.html
docs/0.14.2-incubating/development/extensions-contrib/kafka-simple.html
docs/0.14.2-incubating/development/extensions-contrib/opentsdb-emitter.html
docs/0.14.2-incubating/development/extensions-contrib/rabbitmq.html
docs/0.14.2-incubating/development/extensions-core/approximate-histograms.html
docs/0.14.2-incubating/development/extensions-core/avro.html
docs/0.14.2-incubating/development/extensions-core/bloom-filter.html
docs/0.14.2-incubating/development/extensions-core/datasketches-quantiles.html
docs/0.14.2-incubating/development/extensions-core/datasketches-theta.html
docs/0.14.2-incubating/development/extensions-core/datasketches-tuple.html
docs/0.14.2-incubating/development/extensions-core/examples.html
docs/0.14.2-incubating/development/extensions-core/kafka-eight-firehose.html
docs/0.14.2-incubating/development/extensions-core/lookups-cached-global.html
docs/0.14.2-incubating/development/extensions-core/parquet.html
docs/0.14.2-incubating/development/extensions-core/s3.html
docs/0.14.2-incubating/development/extensions-core/stats.html
docs/0.14.2-incubating/development/extensions-core/test-stats.html
docs/0.14.2-incubating/development/geo.html
docs/0.14.2-incubating/development/modules.html
docs/0.14.2-incubating/ingestion/compaction.html
docs/0.14.2-incubating/ingestion/data-formats.html
docs/0.14.2-incubating/ingestion/delete-data.html
docs/0.14.2-incubating/ingestion/firehose.html
docs/0.14.2-incubating/ingestion/flatten-json.html
docs/0.14.2-incubating/ingestion/hadoop.html
docs/0.14.2-incubating/ingestion/ingestion-spec.html
docs/0.14.2-incubating/ingestion/locking-and-priority.html
docs/0.14.2-incubating/ingestion/misc-tasks.html
docs/0.14.2-incubating/ingestion/stream-pull.html
docs/0.14.2-incubating/ingestion/update-existing-data.html
docs/0.14.2-incubating/operations/use_sbt_to_build_fat_jar.html
docs/0.14.2-incubating/querying/aggregations.html
docs/0.14.2-incubating/querying/dimensionspecs.html
docs/0.14.2-incubating/querying/filters.html
docs/0.14.2-incubating/querying/granularities.html
docs/0.14.2-incubating/querying/groupbyquery.html
docs/0.14.2-incubating/querying/having.html
docs/0.14.2-incubating/querying/hll-old.html
docs/0.14.2-incubating/querying/limitspec.html
docs/0.14.2-incubating/querying/post-aggregations.html
docs/0.14.2-incubating/querying/segmentmetadataquery.html
docs/0.14.2-incubating/querying/select-query.html
docs/0.14.2-incubating/querying/sql.html
docs/0.14.2-incubating/querying/timeboundaryquery.html
docs/0.14.2-incubating/querying/topnmetricspec.html
docs/0.14.2-incubating/tutorials/tutorial-compaction.html
docs/0.14.2-incubating/tutorials/tutorial-ingestion-spec.html
docs/0.14.2-incubating/tutorials/tutorial-query.html
docs/0.14.2-incubating/tutorials/tutorial-rollup.html
docs/0.14.2-incubating/tutorials/tutorial-transform-spec.html
docs/0.14.2-incubating/tutorials/tutorial-update-data.html
docs/0.15.0-incubating/dependencies/metadata-storage.html
docs/0.15.0-incubating/design/auth.html
docs/0.15.0-incubating/development/extensions-contrib/ambari-metrics-emitter.html
docs/0.15.0-incubating/development/extensions-contrib/azure.html
docs/0.15.0-incubating/development/extensions-contrib/cloudfiles.html
docs/0.15.0-incubating/development/extensions-contrib/google.html
docs/0.15.0-incubating/development/extensions-contrib/graphite.html
docs/0.15.0-incubating/development/extensions-contrib/kafka-simple.html
docs/0.15.0-incubating/development/extensions-contrib/opentsdb-emitter.html
docs/0.15.0-incubating/development/extensions-contrib/rabbitmq.html
docs/0.15.0-incubating/development/extensions-core/approximate-histograms.html
docs/0.15.0-incubating/development/extensions-core/avro.html
docs/0.15.0-incubating/development/extensions-core/bloom-filter.html
docs/0.15.0-incubating/development/extensions-core/datasketches-quantiles.html
docs/0.15.0-incubating/development/extensions-core/datasketches-theta.html
docs/0.15.0-incubating/development/extensions-core/datasketches-tuple.html
docs/0.15.0-incubating/development/extensions-core/examples.html
docs/0.15.0-incubating/development/extensions-core/kafka-eight-firehose.html
docs/0.15.0-incubating/development/extensions-core/lookups-cached-global.html
docs/0.15.0-incubating/development/extensions-core/orc.html
docs/0.15.0-incubating/development/extensions-core/parquet.html
docs/0.15.0-incubating/development/extensions-core/s3.html
docs/0.15.0-incubating/development/extensions-core/stats.html
docs/0.15.0-incubating/development/extensions-core/test-stats.html
docs/0.15.0-incubating/development/geo.html
docs/0.15.0-incubating/development/modules.html
docs/0.15.0-incubating/ingestion/compaction.html
docs/0.15.0-incubating/ingestion/data-formats.html
docs/0.15.0-incubating/ingestion/delete-data.html
docs/0.15.0-incubating/ingestion/firehose.html
docs/0.15.0-incubating/ingestion/flatten-json.html
docs/0.15.0-incubating/ingestion/hadoop.html
docs/0.15.0-incubating/ingestion/ingestion-spec.html
docs/0.15.0-incubating/ingestion/locking-and-priority.html
docs/0.15.0-incubating/ingestion/misc-tasks.html
docs/0.15.0-incubating/ingestion/stream-pull.html
docs/0.15.0-incubating/ingestion/update-existing-data.html
docs/0.15.0-incubating/operations/use_sbt_to_build_fat_jar.html
docs/0.15.0-incubating/querying/aggregations.html
docs/0.15.0-incubating/querying/dimensionspecs.html
docs/0.15.0-incubating/querying/filters.html
docs/0.15.0-incubating/querying/granularities.html
docs/0.15.0-incubating/querying/groupbyquery.html
docs/0.15.0-incubating/querying/having.html
docs/0.15.0-incubating/querying/hll-old.html
docs/0.15.0-incubating/querying/limitspec.html
docs/0.15.0-incubating/querying/post-aggregations.html
docs/0.15.0-incubating/querying/segmentmetadataquery.html
docs/0.15.0-incubating/querying/select-query.html
docs/0.15.0-incubating/querying/sql.html
docs/0.15.0-incubating/querying/timeboundaryquery.html
docs/0.15.0-incubating/querying/topnmetricspec.html
docs/0.15.0-incubating/tutorials/tutorial-compaction.html
docs/0.15.0-incubating/tutorials/tutorial-ingestion-spec.html
docs/0.15.0-incubating/tutorials/tutorial-query.html
docs/0.15.0-incubating/tutorials/tutorial-rollup.html
docs/0.15.0-incubating/tutorials/tutorial-transform-spec.html
docs/0.15.0-incubating/tutorials/tutorial-update-data.html
docs/0.15.1-incubating/dependencies/metadata-storage.html
docs/0.15.1-incubating/design/auth.html
docs/0.15.1-incubating/development/extensions-contrib/ambari-metrics-emitter.html
docs/0.15.1-incubating/development/extensions-contrib/azure.html
docs/0.15.1-incubating/development/extensions-contrib/cloudfiles.html
docs/0.15.1-incubating/development/extensions-contrib/google.html
docs/0.15.1-incubating/development/extensions-contrib/graphite.html
docs/0.15.1-incubating/development/extensions-contrib/influx.html
docs/0.15.1-incubating/development/extensions-contrib/kafka-simple.html
docs/0.15.1-incubating/development/extensions-contrib/momentsketch-quantiles.html
docs/0.15.1-incubating/development/extensions-contrib/moving-average-query.html
docs/0.15.1-incubating/development/extensions-contrib/opentsdb-emitter.html
docs/0.15.1-incubating/development/extensions-contrib/rabbitmq.html
docs/0.15.1-incubating/development/extensions-core/approximate-histograms.html
docs/0.15.1-incubating/development/extensions-core/avro.html
docs/0.15.1-incubating/development/extensions-core/bloom-filter.html
docs/0.15.1-incubating/development/extensions-core/datasketches-quantiles.html
docs/0.15.1-incubating/development/extensions-core/datasketches-theta.html
docs/0.15.1-incubating/development/extensions-core/datasketches-tuple.html
docs/0.15.1-incubating/development/extensions-core/druid-basic-security.html
docs/0.15.1-incubating/development/extensions-core/examples.html
docs/0.15.1-incubating/development/extensions-core/kafka-eight-firehose.html
docs/0.15.1-incubating/development/extensions-core/lookups-cached-global.html
docs/0.15.1-incubating/development/extensions-core/orc.html
docs/0.15.1-incubating/development/extensions-core/parquet.html
docs/0.15.1-incubating/development/extensions-core/s3.html
docs/0.15.1-incubating/development/extensions-core/stats.html
docs/0.15.1-incubating/development/extensions-core/test-stats.html
docs/0.15.1-incubating/development/geo.html
docs/0.15.1-incubating/development/modules.html
docs/0.15.1-incubating/ingestion/compaction.html
docs/0.15.1-incubating/ingestion/data-formats.html
docs/0.15.1-incubating/ingestion/delete-data.html
docs/0.15.1-incubating/ingestion/firehose.html
docs/0.15.1-incubating/ingestion/flatten-json.html
docs/0.15.1-incubating/ingestion/hadoop.html
docs/0.15.1-incubating/ingestion/ingestion-spec.html
docs/0.15.1-incubating/ingestion/locking-and-priority.html
docs/0.15.1-incubating/ingestion/misc-tasks.html
docs/0.15.1-incubating/ingestion/stream-pull.html
docs/0.15.1-incubating/ingestion/update-existing-data.html
docs/0.15.1-incubating/operations/use_sbt_to_build_fat_jar.html
docs/0.15.1-incubating/querying/aggregations.html
docs/0.15.1-incubating/querying/dimensionspecs.html
docs/0.15.1-incubating/querying/filters.html
docs/0.15.1-incubating/querying/granularities.html
docs/0.15.1-incubating/querying/groupbyquery.html
docs/0.15.1-incubating/querying/having.html
docs/0.15.1-incubating/querying/hll-old.html
docs/0.15.1-incubating/querying/limitspec.html
docs/0.15.1-incubating/querying/post-aggregations.html
docs/0.15.1-incubating/querying/segmentmetadataquery.html
docs/0.15.1-incubating/querying/select-query.html
docs/0.15.1-incubating/querying/sql.html
docs/0.15.1-incubating/querying/timeboundaryquery.html
docs/0.15.1-incubating/querying/topnmetricspec.html
docs/0.15.1-incubating/tutorials/tutorial-compaction.html
docs/0.15.1-incubating/tutorials/tutorial-ingestion-spec.html
docs/0.15.1-incubating/tutorials/tutorial-query.html
docs/0.15.1-incubating/tutorials/tutorial-rollup.html
docs/0.15.1-incubating/tutorials/tutorial-transform-spec.html
docs/0.15.1-incubating/tutorials/tutorial-update-data.html
index.html

index 7ff40e0e68e4b6e0162ec4cbaeeb849efc1b8cc9..23b47ba7290d3e3daacebf08911e706cd0da0e2f 100644 (file)
@@ -289,22 +289,22 @@ com.metamx.druid.http.ComputeMain
 <span class="p">}]</span>
 </code></pre></div>
 <h3 id="datasource">dataSource</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;dataSource&quot;</span><span class="p">:</span><span class="s2">&quot;druidtest&quot;</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;dataSource&quot;</span><span class="err">:</span><span class="s2">&quot;druidtest&quot;</span>
 </code></pre></div>
 <p>Our dataSource tells us the name of the relation/table, or &#39;source of data&#39;, to query in both our realtime.spec and query.body!</p>
 
 <h3 id="aggregations">aggregations</h3>
 
 <p>Note the <a href="/docs/latest/Aggregations.html">aggregations</a> in our query:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="p">[</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;aggregations&quot;</span><span class="err">:</span> <span class="p">[</span>
         <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;count&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;rows&quot;</span><span class="p">},</span>
         <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;longSum&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;imps&quot;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;impressions&quot;</span><span class="p">},</span>
         <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;doubleSum&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;wp&quot;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;wp&quot;</span><span class="p">}</span>
-    <span class="p">],</span>
+    <span class="p">]</span><span class="err">,</span>
 </code></pre></div>
 <p>this matches up to the aggregators in the schema of our realtime.spec!</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;aggregators&quot;</span><span class="p">:[</span> <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;count&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;impressions&quot;</span><span class="p">},</span>
-                                  <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;doubleSum&quot;</span><span class="p">,</span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;wp&quot;</span><span class="p">,</span><span class="nt">&quot;fieldName&quot;</span><span class="p">:</span><span class="s2">&quot;wp&quot;</span><span class="p">}],</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;aggregators&quot;</span><span class="err">:</span><span class="p">[</span> <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;count&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;impressions&quot;</span><span class="p">},</span>
+                                  <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;doubleSum&quot;</span><span class="p">,</span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;wp&quot;</span><span class="p">,</span><span class="nt">&quot;fieldName&quot;</span><span class="p">:</span><span class="s2">&quot;wp&quot;</span><span class="p">}]</span><span class="err">,</span>
 </code></pre></div>
 <h3 id="dimensions">dimensions</h3>
 
index 972bbc4869428abce03d7c9a363231b1c9457fee..bfd169b2c4f0473f0358d406c58c40393244c19b 100644 (file)
 <h2 id="extracting-the-streamflow-data">Extracting the Streamflow Data</h2>
 
 <p>In R, load the waterData package, then run <code>importDVs()</code>:</p>
-<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> <span class="nf">install.packages</span><span class="p">(</span><span class="s">&quot;waterData&quot;</span><span class="p">)</span>
+<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> install.packages<span class="p">(</span><span class="s">&quot;waterData&quot;</span><span class="p">)</span>
 <span class="kc">...</span>
-<span class="o">&gt;</span> <span class="nf">library</span><span class="p">(</span><span class="n">waterData</span><span class="p">)</span>
+<span class="o">&gt;</span> <span class="kn">library</span><span class="p">(</span>waterData<span class="p">)</span>
 <span class="kc">...</span>
-<span class="o">&gt;</span> <span class="n">napa_flow</span> <span class="o">&lt;-</span> <span class="nf">importDVs</span><span class="p">(</span><span class="s">&quot;11458000&quot;</span><span class="p">,</span> <span class="n">code</span><span class="o">=</span><span class="s">&quot;00060&quot;</span><span class="p">,</span> <span class="n">stat</span><span class="o">=</span><span class="s">&quot;00003&quot;</span><span class="p">,</span> <span class="n">sdate</span><span class="o">=</span><span class="s">&quot;1963-01-01&quot;</span><span class="p">,</span> <span class="n">edate</span><span class="o">=</span><span class="s">&quot;2013-12-31&quot;</span><span class="p">)</span>
+<span class="o">&gt;</span> napa_flow <span class="o">&lt;-</span> importDVs<span class="p">(</span><span class="s">&quot;11458000&quot;</span><span class="p">,</span> code<span class="o">=</span><span class="s">&quot;00060&quot;</span><span class="p">,</span> stat<span class="o">=</span><span class="s">&quot;00003&quot;</span><span class="p">,</span> sdate<span class="o">=</span><span class="s">&quot;1963-01-01&quot;</span><span class="p">,</span> edate<span class="o">=</span><span class="s">&quot;2013-12-31&quot;</span><span class="p">)</span>
 </code></pre></div>
 <p>The last line uses the function <code>waterData.importDVs()</code> to get sensor (or &quot;streamgage&quot;) data directly from the USGS datasource. This function has the following arguments:</p>
 
 <p>The information on the specific site and sensor should provide information on the type of data available and the start-end dates for the full historical record.</p>
 
 <p>You can now analyse and visualize the streamflow data. For example, we ran:</p>
-<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> <span class="n">myWater.plot</span> <span class="o">&lt;-</span> <span class="nf">plotParam</span><span class="p">(</span><span class="n">napa_flow</span><span class="p">)</span>
-<span class="o">&gt;</span> <span class="nf">print</span><span class="p">(</span><span class="n">myWater.plot</span><span class="p">)</span>
+<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> myWater.plot <span class="o">&lt;-</span> plotParam<span class="p">(</span>napa_flow<span class="p">)</span>
+<span class="o">&gt;</span> <span class="kp">print</span><span class="p">(</span>myWater.plot<span class="p">)</span>
 </code></pre></div>
 <p>to get:</p>
 
 <h2 id="transforming-the-data-for-druid">Transforming the Data for Druid</h2>
 
 <p>We first want to have a look at the content of the data frame:</p>
-<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> <span class="nf">head</span><span class="p">(</span><span class="n">napa_flow</span><span class="p">)</span>
-     <span class="n">staid</span> <span class="n">val</span>      <span class="n">dates</span> <span class="n">qualcode</span>
-<span class="m">1</span> <span class="m">11458000</span>  <span class="m">90</span> <span class="m">1963-01-01</span>        <span class="n">A</span>
-<span class="m">2</span> <span class="m">11458000</span>  <span class="m">87</span> <span class="m">1963-01-02</span>        <span class="n">A</span>
-<span class="m">3</span> <span class="m">11458000</span>  <span class="m">85</span> <span class="m">1963-01-03</span>        <span class="n">A</span>
-<span class="m">4</span> <span class="m">11458000</span>  <span class="m">80</span> <span class="m">1963-01-04</span>        <span class="n">A</span>
-<span class="m">5</span> <span class="m">11458000</span>  <span class="m">76</span> <span class="m">1963-01-05</span>        <span class="n">A</span>
-<span class="m">6</span> <span class="m">11458000</span>  <span class="m">75</span> <span class="m">1963-01-06</span>        <span class="n">A</span>
+<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> <span class="kp">head</span><span class="p">(</span>napa_flow<span class="p">)</span>
+     staid val      dates qualcode
+<span class="m">1</span> <span class="m">11458000</span>  <span class="m">90</span> <span class="m">1963-01-01</span>        A
+<span class="m">2</span> <span class="m">11458000</span>  <span class="m">87</span> <span class="m">1963-01-02</span>        A
+<span class="m">3</span> <span class="m">11458000</span>  <span class="m">85</span> <span class="m">1963-01-03</span>        A
+<span class="m">4</span> <span class="m">11458000</span>  <span class="m">80</span> <span class="m">1963-01-04</span>        A
+<span class="m">5</span> <span class="m">11458000</span>  <span class="m">76</span> <span class="m">1963-01-05</span>        A
+<span class="m">6</span> <span class="m">11458000</span>  <span class="m">75</span> <span class="m">1963-01-06</span>        A
 </code></pre></div>
 <p>We don&#39;t have any use for the qualcode (the <a href="http://help.waterdata.usgs.gov/codes-and-parameters/daily-value-qualification-code-dv_rmk_cd">Daily Value Qualification Code</a>), column:</p>
-<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> <span class="n">napa_flow_subset</span> <span class="o">&lt;-</span> <span class="n">napa_flow</span><span class="p">[,</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">3</span><span class="p">)]</span>
+<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="o">&gt;</span> napa_flow_subset <span class="o">&lt;-</span> napa_flow<span class="p">[,</span><span class="kt">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">3</span><span class="p">)]</span>
 </code></pre></div>
 <p>It may look like we also don&#39;t need the staid column, either, since it&#39;s all the same sensor ID. However, we&#39;ll keep it because at some later time we may want to load similar data from other sensors.</p>
 
 <p>Now we can export the data to a file, removing the header and row names:</p>
-<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span><span class="nf">write.table</span><span class="p">(</span><span class="n">napa_flow_subset</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="s">&quot;~/napa-flow.tsv&quot;</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s">&quot;\t&quot;</span><span class="p">,</span> <span class="n">col.names</span> <span class="o">=</span> <span class="bp">F</span><span class="p">,</span> <span class="n">row.names</span> <span class="o">=</span> <span class="bp">F</span><span class="p">)</span>
+<div class="highlight"><pre><code class="language-r" data-lang="r"><span></span>write.table<span class="p">(</span>napa_flow_subset<span class="p">,</span> file<span class="o">=</span><span class="s">&quot;~/napa-flow.tsv&quot;</span><span class="p">,</span> sep<span class="o">=</span><span class="s">&quot;\t&quot;</span><span class="p">,</span> col.names <span class="o">=</span> <span class="bp">F</span><span class="p">,</span> row.names <span class="o">=</span> <span class="bp">F</span><span class="p">)</span>
 </code></pre></div>
 <p>And here&#39;s our file:</p>
 <div class="highlight"><pre><code class="language-bash" data-lang="bash"><span></span>$ head ~/napa-flow.tsv
index 14d856cafeab4c859b901d13881c2ad6a36b77aa..55f45ca4480532de832500924f3a6ca2fbf479e0 100644 (file)
     <span class="n">threshold</span> <span class="o">=</span> <span class="mi">4</span>
 <span class="p">)</span>
 
-<span class="nb">print</span> <span class="n">top_langs</span>  <span class="c1"># Do this if you want to see the raw JSON</span>
+<span class="k">print</span> <span class="n">top_langs</span>  <span class="c1"># Do this if you want to see the raw JSON</span>
 </code></pre></div>
 <p>Let&#39;s break this query down:</p>
 
     <span class="n">threshold</span> <span class="o">=</span> <span class="mi">4</span>
 <span class="p">)</span>
 
-<span class="nb">print</span> <span class="n">top_langs</span>  <span class="c1"># Do this if you want to see the raw JSON</span>
+<span class="k">print</span> <span class="n">top_langs</span>  <span class="c1"># Do this if you want to see the raw JSON</span>
 
 <span class="n">df</span> <span class="o">=</span> <span class="n">query</span><span class="o">.</span><span class="n">export_pandas</span><span class="p">()</span> <span class="c1"># Client will import Pandas, no need to do so separately.</span>
 
 
 <span class="n">df</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>  <span class="c1"># Get a naturally numbered index</span>
 
-<span class="nb">print</span> <span class="n">df</span>
+<span class="k">print</span> <span class="n">df</span>
 
 <span class="n">df</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">&#39;language&#39;</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s1">&#39;bar&#39;</span><span class="p">)</span>
 
diff --git a/css/base.css b/css/base.css
new file mode 100644 (file)
index 0000000..940e77a
--- /dev/null
@@ -0,0 +1,280 @@
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline; }
+
+article, aside, details, figcaption, figure, footer, header, menu, nav, section {
+  display: block; }
+
+body {
+  line-height: 1; }
+
+ol, ul {
+  list-style: none; }
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+* {
+  box-sizing: border-box;
+  vertical-align: top; }
+
+body * {
+  position: relative; }
+
+a {
+  text-decoration: inherit;
+  color: inherit;
+  cursor: inherit; }
+
+div, span {
+  cursor: inherit; }
+
+text {
+  cursor: default; }
+
+button, input, textarea {
+  border: 0;
+  margin: 0; }
+  button:focus, input:focus, textarea:focus {
+    outline: none; }
+
+body {
+  margin-top: 54px; }
+
+html, body {
+  position: relative;
+  color: #1C1C26;
+  font-family: 'Open Sans', Arial, Helvetica, sans-serif;
+  font-weight: 400;
+  font-size: 15px;
+  word-wrap: break-word; }
+  html h1, html h2, html h3, html h4, html h5, html h6, html .h1, html .h2, html .h3, html .h4, html .h5, html .h6, body h1, body h2, body h3, body h4, body h5, body h6, body .h1, body .h2, body .h3, body .h4, body .h5, body .h6 {
+    font-weight: 600;
+    line-height: 140%;
+    margin-bottom: 14px;
+    margin-top: 28px; }
+  html h1, body h1 {
+    font-size: 2.7em; }
+  html h2, body h2 {
+    font-size: 2.2em; }
+  html h3, body h3 {
+    font-size: 1.7em; }
+  html h4, body h4 {
+    font-size: 1.4em; }
+  html h5, body h5 {
+    font-weight: bold; }
+  html h6, body h6 {
+    font-weight: bold;
+    color: #999999; }
+  html p, body p {
+    line-height: 170%;
+    margin-bottom: 14px;
+    margin-top: 14px; }
+    html p:first-child, body p:first-child {
+      margin-top: 28px; }
+  html strong, body strong {
+    font-weight: 700; }
+  html hr, body hr {
+    margin: 30px 0 30px 0; }
+  html a, body a {
+    cursor: pointer; }
+  html p a, html table a, html ul a, html li a, body p a, body table a, body ul a, body li a {
+    color: #4460de;
+    cursor: pointer;
+    font-weight: 600; }
+    html p a:hover, html table a:hover, html ul a:hover, html li a:hover, body p a:hover, body table a:hover, body ul a:hover, body li a:hover {
+      text-decoration: underline; }
+  html ul, body ul {
+    margin-top: 14px;
+    margin-bottom: 14px;
+    line-height: 170%; }
+    html ul li, body ul li {
+      margin-left: 18px;
+      list-style-type: disc; }
+  html ol, body ol {
+    margin-top: 14px;
+    margin-bottom: 14px;
+    line-height: 170%; }
+    html ol li, body ol li {
+      margin-left: 22px;
+      list-style-type: decimal; }
+  html table, body table {
+    width: 100%;
+    table-layout: fixed;
+    margin-top: 14px;
+    margin-bottom: 14px; }
+    html table th, body table th {
+      font-weight: 700; }
+    html table th, html table td, body table th, body table td {
+      padding: 5px; }
+  html blockquote, body blockquote {
+    font-size: 14px;
+    font-style: italic;
+    color: #777; }
+
+.druid-header {
+  padding: 34px 0 44px;
+  margin-bottom: 24px;
+  color: #1c1c26;
+  text-align: center;
+  background-image: url("/img/watermark-light.png");
+  background-size: 330px 330px;
+  background-repeat: no-repeat;
+  background-position: 18% -30px;
+  background-color: #ececf1;
+  overflow: hidden; }
+  .druid-header h1 {
+    margin-top: 14px;
+    font-size: 2.8em; }
+  .druid-header h4 {
+    font-weight: 400;
+    font-size: 15px;
+    margin-top: 0;
+    margin-bottom: 0; }
+    .druid-header h4 a {
+      color: #4460de;
+      font-weight: 600; }
+      .druid-header h4 a .fa {
+        margin-right: 4px; }
+      .druid-header h4 a:hover {
+        text-decoration: underline; }
+
+.text-indent {
+  padding-left: 50px; }
+
+.text-indent-2 {
+  padding-left: 100px; }
+
+.text-indent-p p {
+  padding-left: 50px; }
+
+.image-large {
+  text-align: center;
+  margin-top: 28px;
+  margin-bottom: 28px; }
+  .image-large img {
+    width: 100%;
+    max-width: 660px; }
+
+.large-button {
+  display: inline-block;
+  padding: 10px 22px;
+  color: white;
+  background: #4460de;
+  border-radius: 2px;
+  font-size: 15px;
+  margin-top: 14px;
+  margin-bottom: 14px; }
+  .large-button .fa {
+    margin-right: 3px; }
+  .large-button:hover {
+    background: #2442cb;
+    text-decoration: none; }
+
+.fancy-list {
+  margin-top: 22px;
+  margin-bottom: 22px; }
+  .fancy-list li {
+    list-style: none;
+    font-weight: 600;
+    margin-left: 0;
+    padding-left: 30px;
+    margin-bottom: 8px; }
+    .fancy-list li:before {
+      content: "";
+      position: absolute;
+      top: 5px;
+      left: 0;
+      width: 16px;
+      height: 16px;
+      border-radius: 50%;
+      background: #9caeff; }
+
+.features {
+  margin-bottom: 28px;
+  margin-top: 38px; }
+  .features .feature {
+    padding-left: 74px;
+    margin-bottom: 34px; }
+    .features .feature:nth-child(3n-2) .fa {
+      background: #cbd5ff; }
+    .features .feature:nth-child(3n-1) .fa {
+      background: #a7f1d9; }
+    .features .feature:nth-child(3n) .fa {
+      background: #ffd8a8; }
+    .features .feature .fa {
+      top: 0;
+      left: 0;
+      position: absolute;
+      width: 54px;
+      height: 54px;
+      line-height: 54px;
+      border-radius: 40px;
+      text-align: center;
+      font-size: 20px;
+      background: #cbd5ff;
+      color: #1C1C26; }
+    .features .feature p {
+      margin-top: 0; }
+    .features .feature h5 {
+      margin-bottom: 0;
+      font-size: 1.2em; }
+
+.zigzag-features {
+  margin-bottom: 100px; }
+  .zigzag-features .zigzag-feature {
+    margin-top: 100px; }
+    .zigzag-features .zigzag-feature .fa {
+      top: 0;
+      position: absolute;
+      width: 220px;
+      height: 220px;
+      line-height: 220px;
+      border-radius: 50%;
+      text-align: center;
+      font-size: 70px;
+      background: #cbd5ff;
+      color: #5062B4; }
+    .zigzag-features .zigzag-feature:nth-child(2n-1) {
+      padding-right: 300px; }
+      .zigzag-features .zigzag-feature:nth-child(2n-1) .fa {
+        right: 0; }
+    .zigzag-features .zigzag-feature:nth-child(2n) {
+      padding-left: 300px; }
+      .zigzag-features .zigzag-feature:nth-child(2n) .fa {
+        left: 0; }
+    .zigzag-features .zigzag-feature:nth-child(3n-2) .fa {
+      background: #cbd5ff;
+      color: #5062B4; }
+    .zigzag-features .zigzag-feature:nth-child(3n-1) .fa {
+      background: #a7f1d9;
+      color: #2C8265; }
+    .zigzag-features .zigzag-feature:nth-child(3n) .fa {
+      background: #ffd8a8;
+      color: #926226; }
+  @media (max-width: 840px) {
+    .zigzag-features .zigzag-feature .fa {
+      position: relative;
+      display: block;
+      margin-left: auto;
+      margin-right: auto;
+      margin-bottom: 40px; }
+    .zigzag-features .zigzag-feature:nth-child(2n-1) {
+      padding-right: 0; }
+    .zigzag-features .zigzag-feature:nth-child(2n) {
+      padding-left: 0; } }
+  @media (max-width: 440px) {
+    .zigzag-features {
+      margin-bottom: 70px; }
+      .zigzag-features .zigzag-feature {
+        margin-top: 70px; }
+        .zigzag-features .zigzag-feature .fa {
+          width: 180px;
+          height: 180px;
+          line-height: 180px;
+          font-size: 60px; } }
diff --git a/css/blogs.css b/css/blogs.css
new file mode 100644 (file)
index 0000000..081b39e
--- /dev/null
@@ -0,0 +1,68 @@
+.blog-listing {
+  margin-bottom: 70px; }
+
+.blog-listing h2 {
+  color: #333; }
+
+.blog-listing h2 a {
+  color: inherit;
+  color: #575B61; }
+
+.blog-listing h2 a:hover,
+.blog-listing h2 a:focus {
+  color: #b1bac6;
+  text-decoration: none; }
+
+.blog-listing .btn-default {
+  border-color: #b1b1ac;
+  border-color: #2ceefb;
+  border-color: #2C90FB;
+  border-color: #2576CC;
+  color: #575B61;
+  color: #2C90FB;
+  color: #2576CC; }
+
+.blog-listing .btn-default:hover,
+.blog-listing .btn-default:focus {
+  /* background-color: #b1b1ac; */
+  background-color: #2C90FB;
+  background-color: #2576CC;
+  color: #fff; }
+
+.blog-entry {
+  margin-bottom: 70px; }
+
+.druid-header.blog {
+  padding: 0;
+  overflow: hidden; }
+
+.blog .title-spacer {
+  min-height: 240px; }
+
+.blog .title-image-wrap {
+  top: -50%;
+  left: -50%;
+  width: 200%;
+  height: 200%;
+  position: relative;
+  overflow: hidden;
+  min-height: 45px;
+  /* min-height: 200px; */ }
+
+.blog-entry img {
+  max-width: 100%; }
+
+.blog .title-image {
+  position: absolute;
+  min-width: 30%;
+  min-height: 200px;
+  margin: auto;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  box-shadow: 0px 2px 9px rgba(0, 0, 0, 0.5); }
+
+.recents ul li {
+  font-weight: 400;
+  margin-bottom: 15px; }
diff --git a/css/bootstrap-pure.css b/css/bootstrap-pure.css
new file mode 100644 (file)
index 0000000..820c985
--- /dev/null
@@ -0,0 +1,1855 @@
+/*!
+ * Bootstrap v3.3.5 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Modified by Vadim Ogievetsky
+ */
+article, aside, details, figure, footer, header, main, menu, nav, section, summary {
+  display: block; }
+
+progress, video {
+  display: inline-block;
+  vertical-align: baseline; }
+
+[hidden], template {
+  display: none; }
+
+b, strong {
+  font-weight: bold; }
+
+mark {
+  color: #000;
+  background: #ff0; }
+
+small {
+  font-size: 80%; }
+
+sub {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline; }
+
+sub {
+  bottom: -.25em; }
+
+img {
+  border: 0; }
+
+figure {
+  margin: 1em 40px; }
+
+hr {
+  height: 0;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box; }
+
+pre {
+  overflow: auto; }
+
+code, pre {
+  font-family: monospace, monospace;
+  font-size: 1em; }
+
+button, input, select {
+  margin: 0;
+  font: inherit;
+  color: inherit; }
+
+button {
+  overflow: visible; }
+
+button, select {
+  text-transform: none; }
+
+button, html input[type="button"], input[type="reset"], input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer; }
+
+button[disabled], html input[disabled] {
+  cursor: default; }
+
+button::-moz-focus-inner, input::-moz-focus-inner {
+  padding: 0;
+  border: 0; }
+
+input {
+  line-height: normal; }
+
+input[type="checkbox"], input[type="radio"] {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  padding: 0; }
+
+input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button {
+  height: auto; }
+
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  -webkit-appearance: textfield; }
+
+input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none; }
+
+table {
+  border-spacing: 0;
+  border-collapse: collapse; }
+
+td, th {
+  padding: 0; }
+
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *, *:before, *:after {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    -webkit-box-shadow: none !important;
+    box-shadow: none !important; }
+  a, a:visited {
+    text-decoration: underline; }
+  a[href]:after {
+    content: " (" attr(href) ")"; }
+  a[href^="#"]:after, a[href^="javascript:"]:after {
+    content: ""; }
+  pre, blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid; }
+  thead {
+    display: table-header-group; }
+  tr, img {
+    page-break-inside: avoid; }
+  img {
+    max-width: 100% !important; }
+  p, h2, h3 {
+    orphans: 3;
+    widows: 3; }
+  h2, h3 {
+    page-break-after: avoid; }
+  .navbar {
+    display: none; }
+  .label {
+    border: 1px solid #000; }
+  .table {
+    border-collapse: collapse !important; }
+  .table td, .table th {
+    background-color: #fff !important; } }
+
+@font-face {
+  font-family: 'Glyphicons Halflings';
+  src: url("../fonts/glyphicons-halflings-regular.eot");
+  src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); }
+
+* {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+*:before, *:after {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+input, button, select {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit; }
+
+figure {
+  margin: 0; }
+
+.img-rounded {
+  border-radius: 6px; }
+
+.img-circle {
+  border-radius: 50%; }
+
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee; }
+
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0; }
+
+[role="button"] {
+  cursor: pointer; }
+
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 1.4; }
+
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px; } }
+
+small, .small {
+  font-size: 85%; }
+
+mark, .mark {
+  padding: .2em;
+  background-color: #fcf8e3; }
+
+.text-left {
+  text-align: left; }
+
+.text-right {
+  text-align: right; }
+
+.text-center {
+  text-align: center; }
+
+.text-lowercase {
+  text-transform: lowercase; }
+
+.text-uppercase {
+  text-transform: uppercase; }
+
+.text-muted {
+  color: #777; }
+
+.text-primary {
+  color: #337ab7; }
+
+a.text-primary:hover, a.text-primary:focus {
+  color: #286090; }
+
+.text-success {
+  color: #3c763d; }
+
+a.text-success:hover, a.text-success:focus {
+  color: #2b542c; }
+
+.text-info {
+  color: #31708f; }
+
+a.text-info:hover, a.text-info:focus {
+  color: #245269; }
+
+.text-warning {
+  color: #8a6d3b; }
+
+a.text-warning:hover, a.text-warning:focus {
+  color: #66512c; }
+
+.text-danger {
+  color: #a94442; }
+
+a.text-danger:hover, a.text-danger:focus {
+  color: #843534; }
+
+.bg-primary {
+  color: #fff;
+  background-color: #337ab7; }
+
+a.bg-primary:hover, a.bg-primary:focus {
+  background-color: #286090; }
+
+.bg-success {
+  background-color: #dff0d8; }
+
+a.bg-success:hover, a.bg-success:focus {
+  background-color: #c1e2b3; }
+
+.bg-info {
+  background-color: #d9edf7; }
+
+a.bg-info:hover, a.bg-info:focus {
+  background-color: #afd9ee; }
+
+.bg-warning {
+  background-color: #fcf8e3; }
+
+a.bg-warning:hover, a.bg-warning:focus {
+  background-color: #f7ecb5; }
+
+.bg-danger {
+  background-color: #f2dede; }
+
+a.bg-danger:hover, a.bg-danger:focus {
+  background-color: #e4b9b9; }
+
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee; }
+
+ul, ol {
+  margin-top: 0;
+  margin-bottom: 10px; }
+
+ul ul, ol ul, ul ol, ol ol {
+  margin-bottom: 0; }
+
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none; }
+
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px; }
+
+dl {
+  margin-top: 0;
+  margin-bottom: 20px; }
+
+dt, dd {
+  line-height: 1.42857143; }
+
+dt {
+  font-weight: bold; }
+
+dd {
+  margin-left: 0; }
+
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap; }
+  .dl-horizontal dd {
+    margin-left: 180px; } }
+
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee; }
+
+blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child {
+  margin-bottom: 0; }
+
+blockquote footer, blockquote small, blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #777; }
+
+blockquote footer:before, blockquote small:before, blockquote .small:before {
+  content: '\2014 \00A0'; }
+
+.blockquote-reverse, blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0; }
+
+.blockquote-reverse footer:before, blockquote.pull-right footer:before, .blockquote-reverse small:before, blockquote.pull-right small:before, .blockquote-reverse .small:before, blockquote.pull-right .small:before {
+  content: ''; }
+
+.blockquote-reverse footer:after, blockquote.pull-right footer:after, .blockquote-reverse small:after, blockquote.pull-right small:after, .blockquote-reverse .small:after, blockquote.pull-right .small:after {
+  content: '\00A0 \2014'; }
+
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143; }
+
+code, pre {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace; }
+
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  border-radius: 4px; }
+
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px; }
+
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0; }
+
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto; }
+
+@media (min-width: 768px) {
+  .container {
+    width: 750px; } }
+
+@media (min-width: 992px) {
+  .container {
+    width: 970px; } }
+
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px; } }
+
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto; }
+
+.row {
+  margin-right: -15px;
+  margin-left: -15px; }
+
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px; }
+
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left; }
+
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left; }
+  .col-md-12 {
+    width: 100%; }
+  .col-md-11 {
+    width: 91.66666667%; }
+  .col-md-10 {
+    width: 83.33333333%; }
+  .col-md-9 {
+    width: 75%; }
+  .col-md-8 {
+    width: 66.66666667%; }
+  .col-md-7 {
+    width: 58.33333333%; }
+  .col-md-6 {
+    width: 50%; }
+  .col-md-5 {
+    width: 41.66666667%; }
+  .col-md-4 {
+    width: 33.33333333%; }
+  .col-md-3 {
+    width: 25%; }
+  .col-md-2 {
+    width: 16.66666667%; }
+  .col-md-1 {
+    width: 8.33333333%; }
+  .col-md-pull-12 {
+    right: 100%; }
+  .col-md-pull-11 {
+    right: 91.66666667%; }
+  .col-md-pull-10 {
+    right: 83.33333333%; }
+  .col-md-pull-9 {
+    right: 75%; }
+  .col-md-pull-8 {
+    right: 66.66666667%; }
+  .col-md-pull-7 {
+    right: 58.33333333%; }
+  .col-md-pull-6 {
+    right: 50%; }
+  .col-md-pull-5 {
+    right: 41.66666667%; }
+  .col-md-pull-4 {
+    right: 33.33333333%; }
+  .col-md-pull-3 {
+    right: 25%; }
+  .col-md-pull-2 {
+    right: 16.66666667%; }
+  .col-md-pull-1 {
+    right: 8.33333333%; }
+  .col-md-pull-0 {
+    right: auto; }
+  .col-md-push-12 {
+    left: 100%; }
+  .col-md-push-11 {
+    left: 91.66666667%; }
+  .col-md-push-10 {
+    left: 83.33333333%; }
+  .col-md-push-9 {
+    left: 75%; }
+  .col-md-push-8 {
+    left: 66.66666667%; }
+  .col-md-push-7 {
+    left: 58.33333333%; }
+  .col-md-push-6 {
+    left: 50%; }
+  .col-md-push-5 {
+    left: 41.66666667%; }
+  .col-md-push-4 {
+    left: 33.33333333%; }
+  .col-md-push-3 {
+    left: 25%; }
+  .col-md-push-2 {
+    left: 16.66666667%; }
+  .col-md-push-1 {
+    left: 8.33333333%; }
+  .col-md-push-0 {
+    left: auto; }
+  .col-md-offset-12 {
+    margin-left: 100%; }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%; }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%; }
+  .col-md-offset-9 {
+    margin-left: 75%; }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%; }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%; }
+  .col-md-offset-6 {
+    margin-left: 50%; }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%; }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%; }
+  .col-md-offset-3 {
+    margin-left: 25%; }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%; }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%; }
+  .col-md-offset-0 {
+    margin-left: 0; } }
+
+table {
+  background-color: transparent; }
+
+caption {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  color: #777;
+  text-align: left; }
+
+th {
+  text-align: left; }
+
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 20px; }
+
+.table > thead > tr > th, .table > tbody > tr > th, .table > thead > tr > td, .table > tbody > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd; }
+
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd; }
+
+.table > caption + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td {
+  border-top: 0; }
+
+.table > tbody + tbody {
+  border-top: 2px solid #ddd; }
+
+.table .table {
+  background-color: #fff; }
+
+.table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td {
+  padding: 5px; }
+
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none; }
+
+table td[class*="col-"], table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none; }
+
+.table > thead > tr > td.active, .table > tbody > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th {
+  background-color: #f5f5f5; }
+
+.table > thead > tr > td.success, .table > tbody > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th {
+  background-color: #dff0d8; }
+
+.table > thead > tr > td.info, .table > tbody > tr > td.info, .table > thead > tr > th.info, .table > tbody > tr > th.info, .table > thead > tr.info > td, .table > tbody > tr.info > td, .table > thead > tr.info > th, .table > tbody > tr.info > th {
+  background-color: #d9edf7; }
+
+.table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th {
+  background-color: #fcf8e3; }
+
+.table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th {
+  background-color: #f2dede; }
+
+label {
+  display: inline-block;
+  max-width: 100%;
+  margin-bottom: 5px;
+  font-weight: bold; }
+
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+input[type="radio"], input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  line-height: normal; }
+
+input[type="file"] {
+  display: block; }
+
+input[type="range"] {
+  display: block;
+  width: 100%; }
+
+select[multiple], select[size] {
+  height: auto; }
+
+input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px; }
+
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555; }
+
+input[type="search"] {
+  -webkit-appearance: none; }
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"].form-control, input[type="time"].form-control, input[type="datetime-local"].form-control, input[type="month"].form-control {
+    line-height: 34px; }
+  input[type="date"].input-sm, input[type="time"].input-sm, input[type="datetime-local"].input-sm, input[type="month"].input-sm, .input-group-sm input[type="date"], .input-group-sm input[type="time"], .input-group-sm input[type="datetime-local"], .input-group-sm input[type="month"] {
+    line-height: 30px; }
+  input[type="date"].input-lg, input[type="time"].input-lg, input[type="datetime-local"].input-lg, input[type="month"].input-lg, .input-group-lg input[type="date"], .input-group-lg input[type="time"], .input-group-lg input[type="datetime-local"], .input-group-lg input[type="month"] {
+    line-height: 46px; } }
+
+.form-group {
+  margin-bottom: 15px; }
+
+input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"].disabled, input[type="checkbox"].disabled {
+  cursor: not-allowed; }
+
+.form-control-static {
+  min-height: 34px;
+  padding-top: 7px;
+  padding-bottom: 7px;
+  margin-bottom: 0; }
+
+.form-control-static.input-lg, .form-control-static.input-sm {
+  padding-right: 0;
+  padding-left: 0; }
+
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+select.input-sm {
+  height: 30px;
+  line-height: 30px; }
+
+select[multiple].input-sm {
+  height: auto; }
+
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px; }
+
+select.input-lg {
+  height: 46px;
+  line-height: 46px; }
+
+select[multiple].input-lg {
+  height: auto; }
+
+.has-feedback {
+  position: relative; }
+
+.has-feedback .form-control {
+  padding-right: 42.5px; }
+
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  pointer-events: none; }
+
+.input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback, .form-group-lg .form-control + .form-control-feedback {
+  width: 46px;
+  height: 46px;
+  line-height: 46px; }
+
+.input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback, .form-group-sm .form-control + .form-control-feedback {
+  width: 30px;
+  height: 30px;
+  line-height: 30px; }
+
+.has-success .help-block, .has-success .control-label {
+  color: #3c763d; }
+
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; }
+
+.has-success .form-control-feedback {
+  color: #3c763d; }
+
+.has-warning .help-block, .has-warning .control-label {
+  color: #8a6d3b; }
+
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; }
+
+.has-warning .form-control-feedback {
+  color: #8a6d3b; }
+
+.has-error .help-block, .has-error .control-label {
+  color: #a94442; }
+
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; }
+
+.has-error .form-control-feedback {
+  color: #a94442; }
+
+.has-feedback label ~ .form-control-feedback {
+  top: 25px; }
+
+.has-feedback label.sr-only ~ .form-control-feedback {
+  top: 0; }
+
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373; }
+
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle; }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle; }
+  .form-inline .form-control-static {
+    display: inline-block; }
+  .form-inline .input-group {
+    display: inline-table;
+    vertical-align: middle; }
+  .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control {
+    width: auto; }
+  .form-inline .input-group > .form-control {
+    width: 100%; }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle; }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0; } }
+
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px; }
+
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    padding-top: 7px;
+    margin-bottom: 0;
+    text-align: right; } }
+
+.form-horizontal .has-feedback .form-control-feedback {
+  right: 15px; }
+
+@media (min-width: 768px) {
+  .form-horizontal .form-group-lg .control-label {
+    padding-top: 14.333333px;
+    font-size: 18px; } }
+
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;
+    font-size: 12px; } }
+
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  -ms-touch-action: manipulation;
+  touch-action: manipulation;
+  cursor: pointer;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px; }
+
+.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px; }
+
+.btn:hover, .btn:focus, .btn.focus {
+  color: #333;
+  text-decoration: none; }
+
+.btn:active, .btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }
+
+.btn.disabled, .btn[disabled] {
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  opacity: .65; }
+
+a.btn.disabled {
+  pointer-events: none; }
+
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc; }
+
+.btn-default:focus, .btn-default.focus {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c; }
+
+.btn-default:hover {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad; }
+
+.btn-default:active, .btn-default.active {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad; }
+
+.btn-default:active:hover, .btn-default.active:hover, .btn-default:active:focus, .btn-default.active:focus, .btn-default:active.focus, .btn-default.active.focus {
+  color: #333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c; }
+
+.btn-default:active, .btn-default.active {
+  background-image: none; }
+
+.btn-default.disabled, .btn-default[disabled], .btn-default.disabled:hover, .btn-default[disabled]:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, .btn-default.disabled:active, .btn-default[disabled]:active, .btn-default.disabled.active, .btn-default[disabled].active {
+  background-color: #fff;
+  border-color: #ccc; }
+
+.btn-primary {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #2e6da4; }
+
+.btn-primary:focus, .btn-primary.focus {
+  color: #fff;
+  background-color: #286090;
+  border-color: #122b40; }
+
+.btn-primary:hover {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74; }
+
+.btn-primary:active, .btn-primary.active {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74; }
+
+.btn-primary:active:hover, .btn-primary.active:hover, .btn-primary:active:focus, .btn-primary.active:focus, .btn-primary:active.focus, .btn-primary.active.focus {
+  color: #fff;
+  background-color: #204d74;
+  border-color: #122b40; }
+
+.btn-primary:active, .btn-primary.active {
+  background-image: none; }
+
+.btn-primary.disabled, .btn-primary[disabled], .btn-primary.disabled:hover, .btn-primary[disabled]:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, .btn-primary.disabled.active, .btn-primary[disabled].active {
+  background-color: #337ab7;
+  border-color: #2e6da4; }
+
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c; }
+
+.btn-success:focus, .btn-success.focus {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #255625; }
+
+.btn-success:hover {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439; }
+
+.btn-success:active, .btn-success.active {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439; }
+
+.btn-success:active:hover, .btn-success.active:hover, .btn-success:active:focus, .btn-success.active:focus, .btn-success:active.focus, .btn-success.active.focus {
+  color: #fff;
+  background-color: #398439;
+  border-color: #255625; }
+
+.btn-success:active, .btn-success.active {
+  background-image: none; }
+
+.btn-success.disabled, .btn-success[disabled], .btn-success.disabled:hover, .btn-success[disabled]:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, .btn-success.disabled:active, .btn-success[disabled]:active, .btn-success.disabled.active, .btn-success[disabled].active {
+  background-color: #5cb85c;
+  border-color: #4cae4c; }
+
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da; }
+
+.btn-info:focus, .btn-info.focus {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #1b6d85; }
+
+.btn-info:hover {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc; }
+
+.btn-info:active, .btn-info.active {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc; }
+
+.btn-info:active:hover, .btn-info.active:hover, .btn-info:active:focus, .btn-info.active:focus, .btn-info:active.focus, .btn-info.active.focus {
+  color: #fff;
+  background-color: #269abc;
+  border-color: #1b6d85; }
+
+.btn-info:active, .btn-info.active {
+  background-image: none; }
+
+.btn-info.disabled, .btn-info[disabled], .btn-info.disabled:hover, .btn-info[disabled]:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, .btn-info.disabled:active, .btn-info[disabled]:active, .btn-info.disabled.active, .btn-info[disabled].active {
+  background-color: #5bc0de;
+  border-color: #46b8da; }
+
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236; }
+
+.btn-warning:focus, .btn-warning.focus {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #985f0d; }
+
+.btn-warning:hover {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512; }
+
+.btn-warning:active, .btn-warning.active {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512; }
+
+.btn-warning:active:hover, .btn-warning.active:hover, .btn-warning:active:focus, .btn-warning.active:focus, .btn-warning:active.focus, .btn-warning.active.focus {
+  color: #fff;
+  background-color: #d58512;
+  border-color: #985f0d; }
+
+.btn-warning:active, .btn-warning.active {
+  background-image: none; }
+
+.btn-warning.disabled, .btn-warning[disabled], .btn-warning.disabled:hover, .btn-warning[disabled]:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, .btn-warning.disabled.active, .btn-warning[disabled].active {
+  background-color: #f0ad4e;
+  border-color: #eea236; }
+
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a; }
+
+.btn-danger:focus, .btn-danger.focus {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #761c19; }
+
+.btn-danger:hover {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925; }
+
+.btn-danger:active, .btn-danger.active {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925; }
+
+.btn-danger:active:hover, .btn-danger.active:hover, .btn-danger:active:focus, .btn-danger.active:focus, .btn-danger:active.focus, .btn-danger.active.focus {
+  color: #fff;
+  background-color: #ac2925;
+  border-color: #761c19; }
+
+.btn-danger:active, .btn-danger.active {
+  background-image: none; }
+
+.btn-danger.disabled, .btn-danger[disabled], .btn-danger.disabled:hover, .btn-danger[disabled]:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, .btn-danger.disabled.active, .btn-danger[disabled].active {
+  background-color: #d9534f;
+  border-color: #d43f3a; }
+
+.btn-link {
+  font-weight: normal;
+  color: #337ab7;
+  border-radius: 0; }
+
+.btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled] {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+  box-shadow: none; }
+
+.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
+  border-color: transparent; }
+
+.btn-link:hover, .btn-link:focus {
+  color: #23527c;
+  text-decoration: underline;
+  background-color: transparent; }
+
+.btn-link[disabled]:hover, .btn-link[disabled]:focus {
+  color: #777;
+  text-decoration: none; }
+
+.btn-lg, .btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px; }
+
+.btn-sm, .btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+.btn-xs, .btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+.btn-block {
+  display: block;
+  width: 100%; }
+
+.btn-block + .btn-block {
+  margin-top: 5px; }
+
+input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block {
+  width: 100%; }
+
+.collapse {
+  display: none; }
+
+.collapse.in {
+  display: block; }
+
+tr.collapse.in {
+  display: table-row; }
+
+tbody.collapse.in {
+  display: table-row-group; }
+
+.open > a {
+  outline: 0; }
+
+.btn-group {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle; }
+
+.btn-group > .btn {
+  position: relative;
+  float: left; }
+
+.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active {
+  z-index: 2; }
+
+.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
+  margin-left: -1px; }
+
+.btn-group > .btn:first-child {
+  margin-left: 0; }
+
+.btn-group > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0; }
+
+.btn-group > .btn-group {
+  float: left; }
+
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0; }
+
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0; }
+
+[data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none; }
+
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate; }
+
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0; }
+
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0; }
+
+.input-group-lg > .form-control, .input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px; }
+
+select.input-group-lg > .form-control, select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px; }
+
+select[multiple].input-group-lg > .form-control, select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto; }
+
+.input-group-sm > .form-control, .input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+select.input-group-sm > .form-control, select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px; }
+
+select[multiple].input-group-sm > .form-control, select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto; }
+
+.input-group-btn, .input-group .form-control {
+  display: table-cell; }
+
+.input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0; }
+
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle; }
+
+.input-group .form-control:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.input-group .form-control:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0; }
+
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap; }
+
+.input-group-btn > .btn {
+  position: relative; }
+
+.input-group-btn > .btn + .btn {
+  margin-left: -1px; }
+
+.input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active {
+  z-index: 2; }
+
+.input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group {
+  margin-right: -1px; }
+
+.input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group {
+  z-index: 2;
+  margin-left: -1px; }
+
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none; }
+
+.nav > li {
+  position: relative;
+  display: block; }
+
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px; }
+
+.nav > li > a:hover, .nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eee; }
+
+.nav > li.disabled > a {
+  color: #777; }
+
+.nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
+  color: #777;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent; }
+
+.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
+  background-color: #eee;
+  border-color: #337ab7; }
+
+.nav > li > a > img {
+  max-width: none; }
+
+.tab-content > .active {
+  display: block; }
+
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent; }
+
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px; } }
+
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left; } }
+
+.navbar-collapse {
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); }
+
+.navbar-collapse.in {
+  overflow-y: auto; }
+
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    -webkit-box-shadow: none;
+    box-shadow: none; }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important; }
+  .navbar-collapse.in {
+    overflow-y: visible; }
+  .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0; } }
+
+.navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px; }
+
+@media (max-device-width: 480px) and (orientation: landscape) {
+  .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse {
+    max-height: 200px; } }
+
+.container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px; }
+
+@media (min-width: 768px) {
+  .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0; } }
+
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px; }
+
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0; } }
+
+.navbar-fixed-top, .navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030; }
+
+@media (min-width: 768px) {
+  .navbar-fixed-top, .navbar-fixed-bottom {
+    border-radius: 0; } }
+
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px; }
+
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0; }
+
+.navbar-brand {
+  float: left;
+  height: 50px;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px; }
+
+.navbar-brand:hover, .navbar-brand:focus {
+  text-decoration: none; }
+
+.navbar-brand > img {
+  display: block; }
+
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px; } }
+
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px; }
+
+.navbar-toggle:focus {
+  outline: 0; }
+
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px; }
+
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px; }
+
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none; } }
+
+.navbar-nav {
+  margin: 7.5px -15px; }
+
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px; }
+
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0; }
+  .navbar-nav > li {
+    float: left; }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px; } }
+
+@media (min-width: 768px) {
+  .navbar-right {
+    float: right !important;
+    margin-right: -15px; }
+  .navbar-right ~ .navbar-right {
+    margin-right: 0; } }
+
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7; }
+
+.navbar-default .navbar-brand {
+  color: #777; }
+
+.navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent; }
+
+.navbar-default .navbar-text {
+  color: #777; }
+
+.navbar-default .navbar-nav > li > a {
+  color: #777; }
+
+.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
+  color: #333;
+  background-color: transparent; }
+
+.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
+  color: #555;
+  background-color: #e7e7e7; }
+
+.navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus {
+  color: #ccc;
+  background-color: transparent; }
+
+.navbar-default .navbar-toggle {
+  border-color: #ddd; }
+
+.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
+  background-color: #ddd; }
+
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888; }
+
+.navbar-default .navbar-collapse, .navbar-default .navbar-form {
+  border-color: #e7e7e7; }
+
+.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
+  color: #555;
+  background-color: #e7e7e7; }
+
+.navbar-default .navbar-link {
+  color: #777; }
+
+.navbar-default .navbar-link:hover {
+  color: #333; }
+
+.navbar-default .btn-link {
+  color: #777; }
+
+.navbar-default .btn-link:hover, .navbar-default .btn-link:focus {
+  color: #333; }
+
+.navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus {
+  color: #ccc; }
+
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808; }
+
+.navbar-inverse .navbar-brand {
+  color: #9d9d9d; }
+
+.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent; }
+
+.navbar-inverse .navbar-text {
+  color: #9d9d9d; }
+
+.navbar-inverse .navbar-nav > li > a {
+  color: #9d9d9d; }
+
+.navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent; }
+
+.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808; }
+
+.navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent; }
+
+.navbar-inverse .navbar-toggle {
+  border-color: #333; }
+
+.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
+  background-color: #333; }
+
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff; }
+
+.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
+  border-color: #101010; }
+
+.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808; }
+
+.navbar-inverse .navbar-link {
+  color: #9d9d9d; }
+
+.navbar-inverse .navbar-link:hover {
+  color: #fff; }
+
+.navbar-inverse .btn-link {
+  color: #9d9d9d; }
+
+.navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
+  color: #fff; }
+
+.navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus {
+  color: #444; }
+
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em; }
+
+a.label:hover, a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer; }
+
+.label:empty {
+  display: none; }
+
+.btn .label {
+  position: relative;
+  top: -1px; }
+
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px; }
+
+.alert h4 {
+  margin-top: 0;
+  color: inherit; }
+
+.alert .alert-link {
+  font-weight: bold; }
+
+.alert > p, .alert > ul {
+  margin-bottom: 0; }
+
+.alert > p + p {
+  margin-top: 5px; }
+
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6; }
+
+.alert-success hr {
+  border-top-color: #c9e2b3; }
+
+.alert-success .alert-link {
+  color: #2b542c; }
+
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1; }
+
+.alert-info hr {
+  border-top-color: #a6e1ec; }
+
+.alert-info .alert-link {
+  color: #245269; }
+
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc; }
+
+.alert-warning hr {
+  border-top-color: #f7e1b5; }
+
+.alert-warning .alert-link {
+  color: #66512c; }
+
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1; }
+
+.alert-danger hr {
+  border-top-color: #e4b9c0; }
+
+.alert-danger .alert-link {
+  color: #843534; }
+
+.media {
+  margin-top: 15px; }
+
+.media:first-child {
+  margin-top: 0; }
+
+.media, .media-body {
+  overflow: hidden;
+  zoom: 1; }
+
+.media-body {
+  width: 10000px; }
+
+.media-object {
+  display: block; }
+
+.media-right, .media > .pull-right {
+  padding-left: 10px; }
+
+.media-left, .media > .pull-left {
+  padding-right: 10px; }
+
+.media-left, .media-right, .media-body {
+  display: table-cell;
+  vertical-align: top; }
+
+.media-middle {
+  vertical-align: middle; }
+
+.media-bottom {
+  vertical-align: bottom; }
+
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px; }
+
+.media-list {
+  padding-left: 0;
+  list-style: none; }
+
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2; }
+
+.close:hover, .close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5; }
+
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0; }
+
+.dl-horizontal dd:before, .dl-horizontal dd:after, .container:before, .container:after, .container-fluid:before, .container-fluid:after, .row:before, .row:after, .form-horizontal .form-group:before, .form-horizontal .form-group:after, .nav:before, .nav:after, .navbar:before, .navbar:after, .navbar-header:before, .navbar-header:after, .navbar-collapse:before, .navbar-collapse:after, .panel-body:before, .panel-body:after {
+  display: table;
+  content: " "; }
+
+.dl-horizontal dd:after, .container:after, .container-fluid:after, .row:after, .form-horizontal .form-group:after, .nav:after, .navbar:after, .navbar-header:after, .navbar-collapse:after, .panel-body:after {
+  clear: both; }
+
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto; }
+
+.pull-right {
+  float: right !important; }
+
+.pull-left {
+  float: left !important; }
+
+.hide {
+  display: none !important; }
+
+.show {
+  display: block !important; }
+
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0; }
+
+.hidden {
+  display: none !important; }
+
+@-ms-viewport {
+  width: device-width; }
+
+.visible-xs, .visible-sm, .visible-md, .visible-lg {
+  display: none !important; }
+
+.visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block {
+  display: none !important; }
+
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important; }
+  table.visible-xs {
+    display: table !important; }
+  tr.visible-xs {
+    display: table-row !important; }
+  th.visible-xs, td.visible-xs {
+    display: table-cell !important; } }
+
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important; } }
+
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important; } }
+
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important; }
+  table.visible-sm {
+    display: table !important; }
+  tr.visible-sm {
+    display: table-row !important; }
+  th.visible-sm, td.visible-sm {
+    display: table-cell !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important; }
+  table.visible-md {
+    display: table !important; }
+  tr.visible-md {
+    display: table-row !important; }
+  th.visible-md, td.visible-md {
+    display: table-cell !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important; } }
+
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important; } }
+
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important; } }
+
+@media print {
+  .hidden-print {
+    display: none !important; } }
diff --git a/css/docs.css b/css/docs.css
new file mode 100644 (file)
index 0000000..1bea588
--- /dev/null
@@ -0,0 +1,126 @@
+.doc-container {
+  padding-top: 28px; }
+
+.doc-content pre, .doc-content pre code {
+  overflow: auto;
+  white-space: pre;
+  word-wrap: normal; }
+
+.doc-content img {
+  max-width: 847.5px; }
+
+.doc-content code {
+  background-color: #e0e0e0; }
+
+.doc-content pre code {
+  background-color: transparent; }
+
+.doc-content table,
+.doc-content pre {
+  margin: 35px 0 35px 0; }
+
+.doc-content table,
+.doc-content table > thead > tr > th,
+.doc-content table > tbody > tr > th,
+.doc-content table > tfoot > tr > th,
+.doc-content table > thead > tr > td,
+.doc-content table > tbody > tr > td,
+.doc-content table > tfoot > tr > td {
+  border: 1px solid #dddddd; }
+
+.doc-content table > thead > tr > th,
+.doc-content table > thead > tr > td {
+  border-bottom-width: 2px; }
+
+.doc-content table > tbody > tr:nth-child(odd) > td,
+.doc-content table > tbody > tr:nth-child(odd) > th {
+  background-color: #f9f9f9; }
+
+.doc-content table > tbody > tr:hover > td,
+.doc-content table > tbody > tr:hover > th,
+.doc-content table > tbody > tr:focus > td,
+.doc-content table > tbody > tr:focus > th {
+  background-color: #d5d5d5; }
+
+.doc-content table code {
+  background-color: transparent; }
+
+.doc-content td, .doc-content th {
+  padding: 5px; }
+
+.doc-content .note {
+  position: relative;
+  display: block;
+  padding: 10px 14px 10px 42px;
+  margin: 35px 0 35px 0;
+  background: light-gray;
+  border-radius: 3px;
+  line-height: 170%; }
+  .doc-content .note:after {
+    content: '';
+    position: absolute;
+    top: 2px;
+    left: 0;
+    bottom: 0;
+    width: 42px;
+    background-position: 10px 9px;
+    background-size: 22px 22px;
+    background-repeat: no-repeat; }
+  .doc-content .note.info {
+    background: rgba(51, 200, 208, 0.26);
+    border-left: 2px solid rgba(51, 200, 208, 0.5); }
+    .doc-content .note.info:after {
+      background-image: url(/img/note-info.svg); }
+  .doc-content .note.caution {
+    background: rgba(249, 169, 86, 0.26);
+    border-left: 2px solid rgba(249, 169, 86, 0.5); }
+    .doc-content .note.caution:after {
+      background-image: url(/img/note-caution.svg); }
+
+.toc h2 {
+  font-size: 28px; }
+
+.toc ul {
+  list-style: none;
+  list-style-position: inside;
+  color: #4460de;
+  line-height: 1.9em; }
+  .toc ul li {
+    color: #999999;
+    font-weight: 600;
+    list-style-type: none;
+    margin-left: 0; }
+    .toc ul li a {
+      color: #4460de;
+      display: block; }
+      .toc ul li a:hover {
+        text-decoration: underline; }
+  .toc ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-left: 20px; }
+
+.searchbox {
+  position: relative;
+  height: 26px;
+  margin-top: 17px; }
+  .searchbox .gsc-search-button, .searchbox .searchbox .gsib_b {
+    display: none; }
+  .searchbox input {
+    background: white !important;
+    width: 100% !important;
+    padding: 5px 8px !important;
+    font-size: 13px !important;
+    border: 1px solid #dfdfdf !important;
+    height: 30px !important;
+    text-indent: 0 !important;
+    border-radius: 2px !important; }
+    .searchbox input:hover {
+      border-color: #c4c4c4 !important; }
+    .searchbox input:focus {
+      border-color: #c4c4c4 !important; }
+  .searchbox form, .searchbox table, .searchbox tbody, .searchbox tr, .searchbox td, .searchbox .gsc-input-box {
+    border: none !important;
+    padding: 0 !important;
+    margin: 0 !important;
+    background: none !important; }
diff --git a/css/footer.css b/css/footer.css
new file mode 100644 (file)
index 0000000..2149437
--- /dev/null
@@ -0,0 +1,29 @@
+footer {
+  line-height: 1.4em; }
+  footer a:hover {
+    color: #4460de; }
+  footer .license {
+    margin-top: 12px;
+    font-size: 11px;
+    color: #aaa;
+    line-height: 1.4em; }
+    footer .license a:hover {
+      text-decoration: underline; }
+
+footer .license {
+  margin-top: 12px;
+  font-size: 11px;
+  color: #aaa; }
+  footer .license a:hover {
+    color: #4460de;
+    text-decoration: underline; }
+
+.druid-footer {
+  padding: 32px 0 48px 0;
+  background-color: #f2f2f5;
+  border-top: 1px solid white;
+  margin-top: 50px; }
+  .druid-footer .fa, .druid-footer .fab, .druid-footer .fas {
+    font-size: 18px;
+    margin: 6px 0;
+    color: #4460de; }
diff --git a/css/header.css b/css/header.css
new file mode 100644 (file)
index 0000000..0fb02ec
--- /dev/null
@@ -0,0 +1,110 @@
+.top-navigator {
+  background: #1C1C26;
+  height: 54px;
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 100; }
+  .top-navigator .left-cont .druid-logo {
+    display: inline-block;
+    height: 54px;
+    width: 120px;
+    margin-bottom: -2px;
+    background-position: center;
+    background-image: url("/img/druid_nav.png");
+    background-size: 120px auto;
+    background-repeat: no-repeat; }
+  .top-navigator .right-cont {
+    position: absolute;
+    top: 0;
+    right: 15px; }
+    .top-navigator .right-cont ul {
+      margin: 0; }
+    .top-navigator .right-cont li {
+      line-height: 54px;
+      display: inline-block;
+      font-size: 15px;
+      margin: 0; }
+      .top-navigator .right-cont li.active a {
+        color: white; }
+      .top-navigator .right-cont li.active:after {
+        content: '';
+        position: absolute;
+        height: 2px;
+        bottom: 0;
+        left: 0;
+        right: 0; }
+      .top-navigator .right-cont li a {
+        display: block;
+        padding-left: 8px;
+        padding-right: 8px;
+        color: #9caeff; }
+        .top-navigator .right-cont li a:hover {
+          text-decoration: none;
+          color: white; }
+      .top-navigator .right-cont li.button-link {
+        margin-left: 8px; }
+        .top-navigator .right-cont li.button-link a {
+          display: inline-block;
+          height: 32px;
+          line-height: 32px;
+          margin-top: 9px;
+          background: #9caeff;
+          border-radius: 2px;
+          padding: 0 10px;
+          color: #1C1C26;
+          font-weight: 600;
+          min-width: 106px;
+          text-align: center; }
+          .top-navigator .right-cont li.button-link a:hover {
+            background: white; }
+  .top-navigator .action-button {
+    position: absolute;
+    top: 10px;
+    right: 30px;
+    padding: 8px 16px;
+    text-align: center;
+    border-radius: 2px;
+    cursor: pointer;
+    display: none;
+    color: #9caeff;
+    font-size: 18px;
+    line-height: 18px;
+    font-weight: 600; }
+    .top-navigator .action-button .fa {
+      margin-right: 6px; }
+    .top-navigator .action-button:hover {
+      color: white; }
+  .top-navigator .header-dropdown .header-dropdown-menu {
+    display: none;
+    z-index: 100;
+    position: absolute;
+    top: 54px;
+    left: 0;
+    width: 200px;
+    background: #3a3a52;
+    box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.18);
+    overflow: visible; }
+  .top-navigator .header-dropdown:hover .header-dropdown-menu {
+    display: block; }
+
+@media (max-width: 840px) {
+  body {
+    margin-top: 0; }
+  .top-navigator {
+    height: auto;
+    min-height: 54px;
+    position: relative; }
+    .top-navigator .right-cont {
+      position: relative;
+      display: block;
+      display: none;
+      padding-bottom: 28px; }
+      .top-navigator .right-cont ul {
+        margin-left: 20px; }
+      .top-navigator .right-cont li {
+        display: block;
+        line-height: 42px; }
+    .top-navigator .action-button.menu-icon {
+      display: block; } }
diff --git a/css/index.css b/css/index.css
new file mode 100644 (file)
index 0000000..6eb61a0
--- /dev/null
@@ -0,0 +1,50 @@
+.druid-masthead {
+  padding: 50px 20px 42px 20px;
+  background-color: #3b3b50;
+  text-align: center;
+  margin: 0 auto 20px;
+  margin-bottom: 14px;
+  color: white;
+  overflow: hidden;
+  background-image: url("/img/watermark-dark.png");
+  background-size: 800px auto;
+  background-repeat: no-repeat;
+  background-position: 26% -76px; }
+  .druid-masthead .button {
+    display: inline-block;
+    min-width: 155px;
+    margin: 6px;
+    font-size: 1.1em;
+    line-height: 1.4em;
+    font-weight: 600;
+    padding: 9px 12px;
+    border-radius: 2px;
+    background: #9caeff;
+    color: #1C1C26;
+    transition: background-color 0.1s ease; }
+    .druid-masthead .button .fa, .druid-masthead .button .fab {
+      font-size: 16px;
+      margin-right: 3px; }
+    .druid-masthead .button:hover, .druid-masthead .button:active {
+      background: white;
+      text-decoration: none; }
+  .druid-masthead .lead {
+    font-size: 1.7em;
+    line-height: 1.7em;
+    font-weight: 600;
+    margin-top: 8px;
+    margin-bottom: 26px;
+    max-width: 820px;
+    margin-left: auto;
+    margin-right: auto; }
+  .druid-masthead b {
+    font-weight: 700; }
+
+.bottom-news {
+  display: block; }
+
+@media (max-width: 500px) {
+  .druid-masthead .lead {
+    font-size: 1.4em; }
+  .druid-masthead .button {
+    min-width: 130px; } }
diff --git a/css/news-list.css b/css/news-list.css
new file mode 100644 (file)
index 0000000..dfea42e
--- /dev/null
@@ -0,0 +1,63 @@
+.item-list {
+  margin-top: 6px;
+  padding: 0 10px; }
+  .item-list h3 {
+    font-size: 22px; }
+  .item-list a {
+    display: block;
+    line-height: 1.5em; }
+    .item-list a:hover {
+      text-decoration: none; }
+      .item-list a:hover span.title {
+        text-decoration: underline; }
+  .item-list .text-muted {
+    color: #888;
+    font-weight: 400;
+    font-size: 14px;
+    line-height: 15px; }
+  .item-list .event {
+    position: relative;
+    padding-left: 42px;
+    margin-bottom: 12px; }
+  .item-list .mini-cal {
+    position: absolute;
+    top: 4px;
+    left: 0;
+    background: #4460de;
+    padding: 2px;
+    width: 32px;
+    text-align: center;
+    border-radius: 2px;
+    padding-top: 16px; }
+  .item-list .date-month {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    padding: 1px;
+    background: #4460de;
+    border-radius: 2px;
+    color: white;
+    font-size: 10px;
+    line-height: 14px;
+    font-weight: 600;
+    text-transform: uppercase; }
+  .item-list .date-day {
+    background: white;
+    color: #2442cb;
+    font-size: 16px;
+    font-weight: 600;
+    line-height: 19px; }
+  .item-list .btn-default {
+    border-color: #4460de;
+    background: #4460de;
+    color: white;
+    font-weight: 600;
+    display: inline-block;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 3px 8px; }
+    .item-list .btn-default:hover, .item-list .btn-default:active {
+      background-color: #4460de;
+      border-color: #4460de;
+      color: #fff; }
diff --git a/css/reset.css b/css/reset.css
new file mode 100644 (file)
index 0000000..6d44268
--- /dev/null
@@ -0,0 +1,44 @@
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline; }
+
+article, aside, details, figcaption, figure, footer, header, menu, nav, section {
+  display: block; }
+
+body {
+  line-height: 1; }
+
+ol, ul {
+  list-style: none; }
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+* {
+  box-sizing: border-box;
+  vertical-align: top; }
+
+body * {
+  position: relative; }
+
+a {
+  text-decoration: inherit;
+  color: inherit;
+  cursor: inherit; }
+
+div, span {
+  cursor: inherit; }
+
+text {
+  cursor: default; }
+
+button, input, textarea {
+  border: 0;
+  margin: 0; }
+  button:focus, input:focus, textarea:focus {
+    outline: none; }
diff --git a/css/syntax.css b/css/syntax.css
new file mode 100644 (file)
index 0000000..03b781b
--- /dev/null
@@ -0,0 +1,281 @@
+.hll {
+  background-color: #ffffcc; }
+
+.c {
+  color: #93a1a1;
+  font-style: italic; }
+
+/* Comment */
+.err {
+  color: #dc322f; }
+
+/* Error */
+.g {
+  color: #657b83; }
+
+/* Generic */
+.k {
+  color: #859900; }
+
+/* Keyword */
+.l {
+  color: #657b83; }
+
+/* Literal */
+.n {
+  color: #586e75; }
+
+/* Name */
+.o {
+  color: #657b83; }
+
+/* Operator */
+.x {
+  color: #657b83; }
+
+/* Other */
+.p {
+  color: #657b83; }
+
+/* Punctuation */
+.cm {
+  color: #93a1a1;
+  font-style: italic; }
+
+/* Comment.Multiline */
+.cp {
+  color: #93a1a1;
+  font-style: italic; }
+
+/* Comment.Preproc */
+.c1 {
+  color: #93a1a1;
+  font-style: italic; }
+
+/* Comment.Single */
+.cs {
+  color: #93a1a1;
+  font-style: italic; }
+
+/* Comment.Special */
+.gd {
+  color: #657b83; }
+
+/* Generic.Deleted */
+.ge {
+  color: #657b83; }
+
+/* Generic.Emph */
+.gr {
+  color: #657b83; }
+
+/* Generic.Error */
+.gh {
+  color: #657b83; }
+
+/* Generic.Heading */
+.gi {
+  color: #657b83; }
+
+/* Generic.Inserted */
+.go {
+  color: #657b83; }
+
+/* Generic.Output */
+.gp {
+  color: #657b83; }
+
+/* Generic.Prompt */
+.gs {
+  color: #657b83; }
+
+/* Generic.Strong */
+.gu {
+  color: #657b83; }
+
+/* Generic.Subheading */
+.gt {
+  color: #657b83; }
+
+/* Generic.Traceback */
+.kc {
+  color: #859900; }
+
+/* Keyword.Constant */
+.kd {
+  color: #859900; }
+
+/* Keyword.Declaration */
+.kn {
+  color: #cb4b16; }
+
+/* Keyword.Namespace */
+.kp {
+  color: #cb4b16; }
+
+/* Keyword.Pseudo */
+.kr {
+  color: #859900; }
+
+/* Keyword.Reserved */
+.kt {
+  color: #859900; }
+
+/* Keyword.Type */
+.ld {
+  color: #657b83; }
+
+/* Literal.Date */
+.m {
+  color: #2aa198; }
+
+/* Literal.Number */
+.s {
+  color: #2aa198; }
+
+/* Literal.String */
+.na {
+  color: #657b83; }
+
+/* Name.Attribute */
+.nb {
+  color: #268bd2; }
+
+/* Name.Builtin */
+.nc {
+  color: #268bd2; }
+
+/* Name.Class */
+.no {
+  color: #b58900; }
+
+/* Name.Constant */
+.nd {
+  color: #cb4b16; }
+
+/* Name.Decorator */
+.ni {
+  color: #cb4b16; }
+
+/* Name.Entity */
+.ne {
+  color: #cb4b16; }
+
+/* Name.Exception */
+.nf {
+  color: #268bd2; }
+
+/* Name.Function */
+.nl {
+  color: #657b83; }
+
+/* Name.Label */
+.nn {
+  color: #b58900; }
+
+/* Name.Namespace */
+.nx {
+  color: #657b83; }
+
+/* Name.Other */
+.py {
+  color: #268bd2; }
+
+/* Name.Property */
+.nt {
+  color: #859900; }
+
+/* Name.Tag */
+.nv {
+  color: #cd4b16; }
+
+/* Name.Variable */
+.ow {
+  color: #859900; }
+
+/* Operator.Word */
+.w {
+  color: #fdf6e3; }
+
+/* Text.Whitespace */
+.mf {
+  color: #2aa198; }
+
+/* Literal.Number.Float */
+.mh {
+  color: #2aa198; }
+
+/* Literal.Number.Hex */
+.mi {
+  color: #2aa198; }
+
+/* Literal.Number.Integer */
+.mo {
+  color: #2aa198; }
+
+/* Literal.Number.Oct */
+.sb {
+  color: #2aa198; }
+
+/* Literal.String.Backtick */
+.sc {
+  color: #2aa198; }
+
+/* Literal.String.Char */
+.sd {
+  color: #2aa198; }
+
+/* Literal.String.Doc */
+.s2 {
+  color: #2aa198; }
+
+/* Literal.String.Double */
+.se {
+  color: #cb4b16; }
+
+/* Literal.String.Escape */
+.sh {
+  color: #2aa198; }
+
+/* Literal.String.Heredoc */
+.si {
+  color: #cb4b16; }
+
+/* Literal.String.Interpol */
+.sx {
+  color: #2aa198; }
+
+/* Literal.String.Other */
+.sr {
+  color: #2aa198; }
+
+/* Literal.String.Regex */
+.s1 {
+  color: #2aa198; }
+
+/* Literal.String.Single */
+.ss {
+  color: #2aa198; }
+
+/* Literal.String.Symbol */
+.bp {
+  color: #268bd2;
+  font-weight: bold; }
+
+/* Name.Builtin.Pseudo */
+.vc {
+  color: #268bd2; }
+
+/* Name.Variable.Class */
+.vg {
+  color: #268bd2; }
+
+/* Name.Variable.Global */
+.vi {
+  color: #268bd2; }
+
+/* Name.Variable.Instance */
+.il {
+  color: #2aa198; }
+
+/* Literal.Number.Integer.Long */
diff --git a/css/variables.css b/css/variables.css
new file mode 100644 (file)
index 0000000..e69de29
index 71bb690a04ccf369808aa82b3475ff41ffa977b9..603edd5c136b8af6d7d8983af135898234b264b0 100644 (file)
@@ -208,7 +208,7 @@ an issue).</p>
  <span class="nt">&quot;metrics&quot;</span><span class="p">:</span><span class="s2">&quot;comma-delimited-list-of-metric-names&quot;</span><span class="p">,</span>
  <span class="nt">&quot;shardSpec&quot;</span><span class="p">:{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;none&quot;</span><span class="p">},</span>
  <span class="nt">&quot;binaryVersion&quot;</span><span class="p">:</span><span class="mi">9</span><span class="p">,</span>
- <span class="nt">&quot;size&quot;</span><span class="p">:</span><span class="err">size_o</span><span class="kc">f</span><span class="err">_segme</span><span class="kc">nt</span><span class="p">,</span>
+ <span class="nt">&quot;size&quot;</span><span class="p">:</span><span class="err">size_of_segment</span><span class="p">,</span>
  <span class="nt">&quot;identifier&quot;</span><span class="p">:</span><span class="s2">&quot;wikipedia_2012-05-23T00:00:00.000Z_2012-05-24T00:00:00.000Z_2012-05-23T00:10:00.046Z&quot;</span>
 <span class="p">}</span>
 </code></pre></div>
index d06875d2be63b5acc31342258bdbeeb24fb17c69..03c61beab499d9692e66f0c6e04c2c482fde9209 100644 (file)
@@ -313,11 +313,11 @@ druid.auth.authenticator.anonymous.authorizerName=myBasicAuthorizer
 <p>An Authenticator implementation that is intended to support internal Druid communications must recognize credentials for the &quot;internal system user&quot;, as provided by a corresponding Escalator implementation.</p>
 
 <p>An Escalator must implement three methods related to the internal system user:</p>
-<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span>  <span class="kd">public</span> <span class="n">HttpClient</span> <span class="nf">createEscalatedClient</span><span class="p">(</span><span class="n">HttpClient</span> <span class="n">baseClient</span><span class="p">);</span>
+<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span>  <span class="kd">public</span> <span class="n">HttpClient</span> <span class="nf">createEscalatedClient</span><span class="o">(</span><span class="n">HttpClient</span> <span class="n">baseClient</span><span class="o">);</span>
 
-  <span class="kd">public</span> <span class="n">org</span><span class="p">.</span><span class="na">eclipse</span><span class="p">.</span><span class="na">jetty</span><span class="p">.</span><span class="na">client</span><span class="p">.</span><span class="na">HttpClient</span> <span class="nf">createEscalatedJettyClient</span><span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="na">eclipse</span><span class="p">.</span><span class="na">jetty</span><span class="p">.</span><span class="na">client</span><span class="p">.</span><span class="na">HttpClient</span> <span class="n">baseClient</span><span class="p">);</span>
+  <span class="kd">public</span> <span class="n">org</span><span class="o">.</span><span class="na">eclipse</span><span class="o">.</span><span class="na">jetty</span><span class="o">.</span><span class="na">client</span><span class="o">.</span><span class="na">HttpClient</span> <span class="nf">createEscalatedJettyClient</span><span class="o">(</span><span class="n">org</span><span class="o">.</span><span class="na">eclipse</span><span class="o">.</span><span class="na">jetty</span><span class="o">.</span><span class="na">client</span><span class="o">.</span><span class="na">HttpClient</span> <span class="n">baseClient</span><span class="o">);</span>
 
-  <span class="kd">public</span> <span class="n">AuthenticationResult</span> <span class="nf">createEscalatedAuthenticationResult</span><span class="p">();</span>
+  <span class="kd">public</span> <span class="n">AuthenticationResult</span> <span class="nf">createEscalatedAuthenticationResult</span><span class="o">();</span>
 </code></pre></div>
 <p><code>createEscalatedClient</code> returns an wrapped HttpClient that attaches the credentials of the &quot;internal system user&quot; to requests.</p>
 
index 8d459bb2ecf35cc5f9c09a28526d5f6888dc1c4c..eb5cb9d550cf4e6479076ba75087d05eb7e4420a 100644 (file)
@@ -274,7 +274,7 @@ Properly naming the metrics is critical to avoid conflicts, confusing data and p
 <p>The first implementation called <code>all</code>, will send all the druid service metrics events. 
 The path will be in the form <code>&lt;namespacePrefix&gt;.[&lt;druid service name&gt;].[&lt;druid hostname&gt;].&lt;dimensions values ordered by dimension&#39;s name&gt;.&lt;metric&gt;</code>
 User has control of <code>&lt;namespacePrefix&gt;.[&lt;druid service name&gt;].[&lt;druid hostname&gt;].</code></p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emi</span><span class="kc">tter</span><span class="err">.ambari</span><span class="mi">-</span><span class="err">me</span><span class="kc">tr</span><span class="err">ics.eve</span><span class="kc">nt</span><span class="err">Co</span><span class="kc">n</span><span class="err">ver</span><span class="kc">ter</span><span class="err">=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;appName&quot;</span><span class="p">:</span><span class="s2">&quot;druid&quot;</span><span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emitter.ambari-metrics.eventConverter=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;appName&quot;</span><span class="p">:</span><span class="s2">&quot;druid&quot;</span><span class="p">}</span>
 </code></pre></div>
 <h4 id="white-list-based-converter">White-list based converter</h4>
 
@@ -285,7 +285,7 @@ White-list based converter comes with the following  default white list map loca
 <p>Although user can override the default white list map by supplying a property called <code>mapPath</code>.
 This property is a String containing  the path for the file containing <strong>white list map Json object</strong>.
 For example the following converter will read the map from the file <code>/pathPrefix/fileName.json</code>.  </p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emi</span><span class="kc">tter</span><span class="err">.ambari</span><span class="mi">-</span><span class="err">me</span><span class="kc">tr</span><span class="err">ics.eve</span><span class="kc">nt</span><span class="err">Co</span><span class="kc">n</span><span class="err">ver</span><span class="kc">ter</span><span class="err">=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;whiteList&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;ignoreHostname&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;appName&quot;</span><span class="p">:</span><span class="s2">&quot;druid&quot;</span><span class="p">,</span> <span class="nt">&quot;mapPath&quot;</span><span class="p">:</span><span class="s2">&quot;/pathPrefix/fileName.json&quot;</span><span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emitter.ambari-metrics.eventConverter=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;whiteList&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;ignoreHostname&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;appName&quot;</span><span class="p">:</span><span class="s2">&quot;druid&quot;</span><span class="p">,</span> <span class="nt">&quot;mapPath&quot;</span><span class="p">:</span><span class="s2">&quot;/pathPrefix/fileName.json&quot;</span><span class="p">}</span>
 </code></pre></div>
 <p><strong>Druid emits a huge number of metrics we highly recommend to use the <code>whiteList</code> converter</strong></p>
 
index 63d141e463897e8862e960b6de2917d3710973c1..afc79cc9fbb03585296c401929dbe277f0326a90 100644 (file)
 Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p>
 
 <p>Sample spec:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span> <span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;static-azure-blobstore&quot;</span><span class="p">,</span>
     <span class="nt">&quot;blobs&quot;</span><span class="p">:</span> <span class="p">[</span>
         <span class="p">{</span>
index 5464f7cb2cce3ba1a992f1191f111466332d677b..2650e97be1543ec67239746403dbda62f8c83d6e 100644 (file)
 Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p>
 
 <p>Sample spec:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span> <span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;static-cloudfiles&quot;</span><span class="p">,</span>
     <span class="nt">&quot;blobs&quot;</span><span class="p">:</span> <span class="p">[</span>
         <span class="p">{</span>
-          <span class="nt">&quot;region&quot;</span><span class="p">:</span> <span class="nt">&quot;DFW&quot;</span>
-          <span class="nt">&quot;container&quot;</span><span class="p">:</span> <span class="s2">&quot;container&quot;</span><span class="p">,</span>
+          <span class="nt">&quot;region&quot;</span><span class="p">:</span> <span class="s2">&quot;DFW&quot;</span>
+          <span class="s2">&quot;container&quot;</span><span class="p">:</span> <span class="s2">&quot;container&quot;</span><span class="p">,</span>
           <span class="nt">&quot;path&quot;</span><span class="p">:</span> <span class="s2">&quot;/path/to/your/file.json&quot;</span>
         <span class="p">},</span>
         <span class="p">{</span>
-          <span class="nt">&quot;region&quot;</span><span class="p">:</span> <span class="nt">&quot;ORD&quot;</span>
-          <span class="nt">&quot;container&quot;</span><span class="p">:</span> <span class="s2">&quot;anothercontainer&quot;</span><span class="p">,</span>
+          <span class="nt">&quot;region&quot;</span><span class="p">:</span> <span class="s2">&quot;ORD&quot;</span>
+          <span class="s2">&quot;container&quot;</span><span class="p">:</span> <span class="s2">&quot;anothercontainer&quot;</span><span class="p">,</span>
           <span class="nt">&quot;path&quot;</span><span class="p">:</span> <span class="s2">&quot;/another/path.json&quot;</span>
         <span class="p">}</span>
     <span class="p">]</span>
index 098dcc1368b4c62be960a6e4a0f59f8cd2cbd3b2..5ada1bfd2c11f98fa774e672b664e12e81b1ed27 100644 (file)
 Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p>
 
 <p>Sample spec:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span> <span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;static-google-blobstore&quot;</span><span class="p">,</span>
     <span class="nt">&quot;blobs&quot;</span><span class="p">:</span> <span class="p">[</span>
         <span class="p">{</span>
index bc1f265c9e66fb0ddd3068fe84dca5abbeb0da98..712776ce376f3b608e5eef05a340b7e26f6b6c28 100644 (file)
@@ -281,7 +281,7 @@ User has control of <code>&lt;namespacePrefix&gt;.[&lt;druid service name&gt;].[
 <p>Elements in metric name by default are separated by &quot;/&quot;, so graphite will create all metrics on one level. If you want to have metrics in the tree structure, you have to set <code>replaceSlashWithDot=true</code>
 Original: <code>druid.HOSTNAME.dataSourceName.queryType.query/time</code>
 Changed: <code>druid.HOSTNAME.dataSourceName.queryType.query.time</code></p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emi</span><span class="kc">tter</span><span class="err">.graphi</span><span class="kc">te</span><span class="err">.eve</span><span class="kc">nt</span><span class="err">Co</span><span class="kc">n</span><span class="err">ver</span><span class="kc">ter</span><span class="err">=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;ignoreHostname&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;ignoreServiceName&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emitter.graphite.eventConverter=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;ignoreHostname&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;ignoreServiceName&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">}</span>
 </code></pre></div>
 <h4 id="white-list-based-converter">White-list based converter</h4>
 
@@ -292,7 +292,7 @@ White-list based converter comes with the following  default white list map loca
 <p>Although user can override the default white list map by supplying a property called <code>mapPath</code>.
 This property is a String containing the path for the file containing <strong>white list map Json object</strong>.
 For example the following converter will read the map from the file <code>/pathPrefix/fileName.json</code>.  </p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emi</span><span class="kc">tter</span><span class="err">.graphi</span><span class="kc">te</span><span class="err">.eve</span><span class="kc">nt</span><span class="err">Co</span><span class="kc">n</span><span class="err">ver</span><span class="kc">ter</span><span class="err">=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;whiteList&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;ignoreHostname&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;ignoreServiceName&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;mapPath&quot;</span><span class="p">:</span><span class="s2">&quot;/pathPrefix/fileName.json&quot;</span><span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="err">druid.emitter.graphite.eventConverter=</span><span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;whiteList&quot;</span><span class="p">,</span> <span class="nt">&quot;namespacePrefix&quot;</span><span class="p">:</span> <span class="s2">&quot;druid.test&quot;</span><span class="p">,</span> <span class="nt">&quot;ignoreHostname&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;ignoreServiceName&quot;</span><span class="p">:</span><span class="kc">true</span><span class="p">,</span> <span class="nt">&quot;mapPath&quot;</span><span class="p">:</span><span class="s2">&quot;/pathPrefix/fileName.json&quot;</span><span class="p">}</span>
 </code></pre></div>
 <p><strong>Druid emits a huge number of metrics we highly recommend to use the <code>whiteList</code> converter</strong></p>
 
index 9bfa885fe3b1284ece2b1363142bbeb5749ec4ae..9b66cd47c3c67581b036e4d589eff6b5ba69caea 100644 (file)
 
 <p>This is an experimental firehose to ingest data from kafka using kafka simple consumer api. Currently, this firehose would only work inside standalone realtime nodes.
 The configuration for KafkaSimpleConsumerFirehose is similar to the Kafka Eight Firehose , except <code>firehose</code> should be replaced with <code>firehoseV2</code> like this:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehoseV2&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehoseV2&quot;</span><span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;kafka-0.8-v2&quot;</span><span class="p">,</span>
   <span class="nt">&quot;brokerList&quot;</span> <span class="p">:</span>  <span class="p">[</span><span class="s2">&quot;localhost:4443&quot;</span><span class="p">],</span>
   <span class="nt">&quot;queueBufferLength&quot;</span><span class="p">:</span><span class="mi">10001</span><span class="p">,</span>
index 83d891368e036eb308e75c6eb873c8c684e28fc9..d969b6a3702200e75cdd524bbf08912d00671397 100644 (file)
 If the user does not specify their own JSON file, a default file is used.  All metrics are expected to be configured in the JSON file. Metrics which are not configured will be logged.
 Desired metrics and dimensions is organized using the following schema:<code>&lt;druid metric name&gt; : [ &lt;dimension list&gt; ]</code><br />
 e.g.</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;query/time&quot;</span><span class="p">:</span> <span class="p">[</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;query/time&quot;</span><span class="err">:</span> <span class="p">[</span>
     <span class="s2">&quot;dataSource&quot;</span><span class="p">,</span>
     <span class="s2">&quot;type&quot;</span>
 <span class="p">]</span>
index 6231290a8d3d9fbff99d4c3dfcc7dc7a77dcce09..268e366ed233ca1b8529039309328480ffa9cee6 100644 (file)
 <p><strong>Note:</strong> Add <strong>amqp-client-3.2.1.jar</strong> to lib directory of druid to use this firehose.</p>
 
 <p>A sample spec for rabbitmq firehose:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span> <span class="err">:</span> <span class="p">{</span>
    <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;rabbitmq&quot;</span><span class="p">,</span>
    <span class="nt">&quot;connection&quot;</span> <span class="p">:</span> <span class="p">{</span>
      <span class="nt">&quot;host&quot;</span><span class="p">:</span> <span class="s2">&quot;localhost&quot;</span><span class="p">,</span>
index 2bb47d3d7a3d083ec98021cbe700fe9a6eef959c..1e25d9c4a6ea88be76f2a861e7d53f06868c3dc8 100644 (file)
@@ -203,12 +203,12 @@ such rows will be ignored.</p>
 query.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;approxHistogram or approxHistogramFold (at ingestion time), approxHistogramFold (at query time)&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;me</span><span class="kc">tr</span><span class="err">ic_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;resolution&quot;</span> <span class="p">:</span> <span class="err">&lt;i</span><span class="kc">nte</span><span class="err">ger&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;numBuckets&quot;</span> <span class="p">:</span> <span class="err">&lt;i</span><span class="kc">nte</span><span class="err">ger&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;lowerLimit&quot;</span> <span class="p">:</span> <span class="err">&lt;</span><span class="kc">fl</span><span class="err">oa</span><span class="kc">t</span><span class="err">&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;upperLimit&quot;</span> <span class="p">:</span> <span class="err">&lt;</span><span class="kc">fl</span><span class="err">oa</span><span class="kc">t</span><span class="err">&gt;</span>
+  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;metric_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;resolution&quot;</span> <span class="p">:</span> <span class="err">&lt;integer&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;numBuckets&quot;</span> <span class="p">:</span> <span class="err">&lt;integer&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;lowerLimit&quot;</span> <span class="p">:</span> <span class="err">&lt;float&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;upperLimit&quot;</span> <span class="p">:</span> <span class="err">&lt;float&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <table><thead>
@@ -249,7 +249,7 @@ Bucket intervals are based on the range of the underlying data.</p>
   <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;equalBuckets&quot;</span><span class="p">,</span>
   <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;output_name&gt;&quot;</span><span class="p">,</span>
   <span class="nt">&quot;fieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;aggregator_name&gt;&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;numBuckets&quot;</span><span class="p">:</span> <span class="err">&lt;cou</span><span class="kc">nt</span><span class="err">&gt;</span>
+  <span class="nt">&quot;numBuckets&quot;</span><span class="p">:</span> <span class="err">&lt;count&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="buckets-post-aggregator">Buckets post-aggregator</h4>
@@ -263,37 +263,37 @@ Bucket intervals are based on the range of the underlying data.</p>
   <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;buckets&quot;</span><span class="p">,</span>
   <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;output_name&gt;&quot;</span><span class="p">,</span>
   <span class="nt">&quot;fieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;aggregator_name&gt;&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;bucketSize&quot;</span><span class="p">:</span> <span class="err">&lt;bucke</span><span class="kc">t</span><span class="err">_size&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;offset&quot;</span><span class="p">:</span> <span class="err">&lt;o</span><span class="kc">ffset</span><span class="err">&gt;</span>
+  <span class="nt">&quot;bucketSize&quot;</span><span class="p">:</span> <span class="err">&lt;bucket_size&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;offset&quot;</span><span class="p">:</span> <span class="err">&lt;offset&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="custom-buckets-post-aggregator">Custom buckets post-aggregator</h4>
 
 <p>Computes a visual representation of the approximate histogram with bins laid out according to the given breaks.</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;customBuckets&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggrega</span><span class="kc">t</span><span class="err">or_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;customBuckets&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggregator_name&gt;</span><span class="p">,</span>
   <span class="nt">&quot;breaks&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="err">&lt;value&gt;</span><span class="p">,</span> <span class="err">&lt;value&gt;</span><span class="p">,</span> <span class="err">...</span> <span class="p">]</span> <span class="p">}</span>
 </code></pre></div>
 <h4 id="min-post-aggregator">min post-aggregator</h4>
 
 <p>Returns the minimum value of the underlying approximate histogram aggregator</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;min&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggrega</span><span class="kc">t</span><span class="err">or_</span><span class="kc">na</span><span class="err">me&gt;</span> <span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;min&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggregator_name&gt;</span> <span class="p">}</span>
 </code></pre></div>
 <h4 id="max-post-aggregator">max post-aggregator</h4>
 
 <p>Returns the maximum value of the underlying approximate histogram aggregator</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;max&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggrega</span><span class="kc">t</span><span class="err">or_</span><span class="kc">na</span><span class="err">me&gt;</span> <span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;max&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggregator_name&gt;</span> <span class="p">}</span>
 </code></pre></div>
 <h4 id="quantile-post-aggregator">quantile post-aggregator</h4>
 
 <p>Computes a single quantile based on the underlying approximate histogram aggregator</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;quantile&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggrega</span><span class="kc">t</span><span class="err">or_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;probability&quot;</span> <span class="p">:</span> <span class="err">&lt;qua</span><span class="kc">nt</span><span class="err">ile&gt;</span> <span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;quantile&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggregator_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;probability&quot;</span> <span class="p">:</span> <span class="err">&lt;quantile&gt;</span> <span class="p">}</span>
 </code></pre></div>
 <h4 id="quantiles-post-aggregator">quantiles post-aggregator</h4>
 
 <p>Computes an array of quantiles based on the underlying approximate histogram aggregator</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;quantiles&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggrega</span><span class="kc">t</span><span class="err">or_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;probabilities&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="err">&lt;qua</span><span class="kc">nt</span><span class="err">ile&gt;</span><span class="p">,</span> <span class="err">&lt;qua</span><span class="kc">nt</span><span class="err">ile&gt;</span><span class="p">,</span> <span class="err">...</span> <span class="p">]</span> <span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span> <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;quantiles&quot;</span><span class="p">,</span> <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span> <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;aggregator_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;probabilities&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="err">&lt;quantile&gt;</span><span class="p">,</span> <span class="err">&lt;quantile&gt;</span><span class="p">,</span> <span class="err">...</span> <span class="p">]</span> <span class="p">}</span>
 </code></pre></div>
         </div>
         <div class="col-md-3">
index 69918fadd80ed9f78de56c8a891579e272041455..9190a131f545094f50c054852d3cc1dd0925e25b 100644 (file)
 field types, which can be used to read nested Avro records. The &quot;jq&quot; field type is not currently supported for Avro.</p>
 
 <p>For example, using Avro stream parser with schema repo Avro bytes decoder:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;parser&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;parser&quot;</span> <span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;avro_stream&quot;</span><span class="p">,</span>
   <span class="nt">&quot;avroBytesDecoder&quot;</span> <span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;schema_repo&quot;</span><span class="p">,</span>
@@ -203,9 +203,9 @@ field types, which can be used to read nested Avro records. The &quot;jq&quot; f
   <span class="p">},</span>
   <span class="nt">&quot;parseSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;avro&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;timestampSpec&quot;</span><span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tan</span><span class="err">dard</span> <span class="kc">t</span><span class="err">imes</span><span class="kc">ta</span><span class="err">mpSpec&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;dimensionsSpec&quot;</span><span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tan</span><span class="err">dard</span> <span class="err">dime</span><span class="kc">ns</span><span class="err">io</span><span class="kc">ns</span><span class="err">Spec&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;flattenSpec&quot;</span><span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span><span class="err">&gt;</span>
+    <span class="nt">&quot;timestampSpec&quot;</span><span class="p">:</span> <span class="err">&lt;standard</span> <span class="err">timestampSpec&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dimensionsSpec&quot;</span><span class="p">:</span> <span class="err">&lt;standard</span> <span class="err">dimensionsSpec&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;flattenSpec&quot;</span><span class="p">:</span> <span class="err">&lt;optional&gt;</span>
   <span class="p">}</span>
 <span class="p">}</span>
 </code></pre></div>
@@ -433,9 +433,9 @@ field types, which can be used to read nested Avro records. The &quot;jq&quot; f
         <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;avro_hadoop&quot;</span><span class="p">,</span>
         <span class="nt">&quot;parseSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
           <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;avro&quot;</span><span class="p">,</span>
-          <span class="nt">&quot;timestampSpec&quot;</span><span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tan</span><span class="err">dard</span> <span class="kc">t</span><span class="err">imes</span><span class="kc">ta</span><span class="err">mpSpec&gt;</span><span class="p">,</span>
-          <span class="nt">&quot;dimensionsSpec&quot;</span><span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tan</span><span class="err">dard</span> <span class="err">dime</span><span class="kc">ns</span><span class="err">io</span><span class="kc">ns</span><span class="err">Spec&gt;</span><span class="p">,</span>
-          <span class="nt">&quot;flattenSpec&quot;</span><span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span><span class="err">&gt;</span>
+          <span class="nt">&quot;timestampSpec&quot;</span><span class="p">:</span> <span class="err">&lt;standard</span> <span class="err">timestampSpec&gt;</span><span class="p">,</span>
+          <span class="nt">&quot;dimensionsSpec&quot;</span><span class="p">:</span> <span class="err">&lt;standard</span> <span class="err">dimensionsSpec&gt;</span><span class="p">,</span>
+          <span class="nt">&quot;flattenSpec&quot;</span><span class="p">:</span> <span class="err">&lt;optional&gt;</span>
         <span class="p">}</span>
       <span class="p">}</span>
     <span class="p">},</span>
index db1e27464a0fa04457e9de60dcf2b68365b22ca9..853f83752dc7640ac91b06e893553c674a15429a 100644 (file)
@@ -167,9 +167,9 @@ Following are some characterstics of BloomFilter
 <h3 id="json-representation-of-bloom-filter">JSON Representation of Bloom Filter</h3>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;bloom&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;dimension&quot;</span> <span class="p">:</span> <span class="err">&lt;dime</span><span class="kc">ns</span><span class="err">io</span><span class="kc">n</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;bloomKFilter&quot;</span> <span class="p">:</span> <span class="err">&lt;serialized_by</span><span class="kc">tes</span><span class="err">_</span><span class="kc">f</span><span class="err">or_BloomKFil</span><span class="kc">ter</span><span class="err">&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;extractionFn&quot;</span> <span class="p">:</span> <span class="err">&lt;ex</span><span class="kc">tra</span><span class="err">c</span><span class="kc">t</span><span class="err">io</span><span class="kc">n</span><span class="err">_</span><span class="kc">fn</span><span class="err">&gt;</span>
+  <span class="nt">&quot;dimension&quot;</span> <span class="p">:</span> <span class="err">&lt;dimension_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;bloomKFilter&quot;</span> <span class="p">:</span> <span class="err">&lt;serialized_bytes_for_BloomKFilter&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;extractionFn&quot;</span> <span class="p">:</span> <span class="err">&lt;extraction_fn&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <table><thead>
index 2d491f90d00d37994c07ea6fbfc33440d2225c43..47cda799516d8a8bf62e3f268722516cb693b78e 100644 (file)
 <p>The result of the aggregation is a DoublesSketch that is the union of all sketches either built from raw data or read from the segments.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;quantilesDoublesSketch&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;me</span><span class="kc">tr</span><span class="err">ic_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;k&quot;</span><span class="p">:</span> <span class="err">&lt;parame</span><span class="kc">ter</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">co</span><span class="kc">ntr</span><span class="err">ols</span> <span class="err">size</span> <span class="err">a</span><span class="kc">n</span><span class="err">d</span> <span class="err">accuracy&gt;</span>
+  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;metric_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;k&quot;</span><span class="p">:</span> <span class="err">&lt;parameter</span> <span class="err">that</span> <span class="err">controls</span> <span class="err">size</span> <span class="err">and</span> <span class="err">accuracy&gt;</span>
  <span class="p">}</span>
 </code></pre></div>
 <table><thead>
 <p>This returns an approximation to the value that would be preceded by a given fraction of a hypothetical sorted version of the input stream.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;quantilesDoublesSketchToQuantile&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fraction&quot;</span> <span class="p">:</span> <span class="err">&lt;</span><span class="kc">fra</span><span class="err">c</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span> <span class="err">posi</span><span class="kc">t</span><span class="err">io</span><span class="kc">n</span> <span class="err">i</span><span class="kc">n</span> <span class="kc">t</span><span class="err">he</span> <span class="err">hypo</span><span class="kc">t</span><span class="err">he</span><span class="kc">t</span><span class="err">ical</span> <span class="err">sor</span><span class="kc">te</span><span class="err">d</span> <span class="err">s</span><span class="kc">trea</span><span class="err">m</span><span class="p">,</span> <span class="kc">nu</span><span class="err">mber</span> <span class="kc">fr</span><span class="err">om</span> <span class="mi">0</span> <span class="kc">t</span><span class="err">o</span> <span class="mi">1</span> <span class="err">i</span><span class="kc">n</span><span class="err">clusive&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fraction&quot;</span> <span class="p">:</span> <span class="err">&lt;fractional</span> <span class="err">position</span> <span class="err">in</span> <span class="err">the</span> <span class="err">hypothetical</span> <span class="err">sorted</span> <span class="err">stream</span><span class="p">,</span> <span class="err">number</span> <span class="err">from</span> <span class="err">0</span> <span class="err">to</span> <span class="err">1</span> <span class="err">inclusive&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="quantiles">Quantiles</h4>
 <p>This returns an array of quantiles corresponding to a given array of fractions</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;quantilesDoublesSketchToQuantiles&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fractions&quot;</span> <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">o</span><span class="kc">f</span> <span class="kc">fra</span><span class="err">c</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span> <span class="err">posi</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span> <span class="err">i</span><span class="kc">n</span> <span class="kc">t</span><span class="err">he</span> <span class="err">hypo</span><span class="kc">t</span><span class="err">he</span><span class="kc">t</span><span class="err">ical</span> <span class="err">sor</span><span class="kc">te</span><span class="err">d</span> <span class="err">s</span><span class="kc">trea</span><span class="err">m</span><span class="p">,</span> <span class="kc">nu</span><span class="err">mber</span> <span class="kc">fr</span><span class="err">om</span> <span class="mi">0</span> <span class="kc">t</span><span class="err">o</span> <span class="mi">1</span> <span class="err">i</span><span class="kc">n</span><span class="err">clusive&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fractions&quot;</span> <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">of</span> <span class="err">fractional</span> <span class="err">positions</span> <span class="err">in</span> <span class="err">the</span> <span class="err">hypothetical</span> <span class="err">sorted</span> <span class="err">stream</span><span class="p">,</span> <span class="err">number</span> <span class="err">from</span> <span class="err">0</span> <span class="err">to</span> <span class="err">1</span> <span class="err">inclusive&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="histogram">Histogram</h4>
 <p>This returns an approximation to the histogram given an array of split points that define the histogram bins. An array of <i>m</i> unique, monotonically increasing split points divide the real number line into <i>m+1</i> consecutive disjoint intervals. The definition of an interval is inclusive of the left split point and exclusive of the right split point.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;quantilesDoublesSketchToHistogram&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;splitPoints&quot;</span> <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">o</span><span class="kc">f</span> <span class="err">spli</span><span class="kc">t</span> <span class="err">poi</span><span class="kc">nts</span><span class="err">&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;splitPoints&quot;</span> <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">of</span> <span class="err">split</span> <span class="err">points&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="sketch-summary">Sketch Summary</h4>
 <p>This returns a summary of the sketch that can be used for debugging. This is the result of calling toString() method.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;quantilesDoublesSketchToString&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
         </div>
index df8c4617497cd5f12c4eaacdef02f07f98a701d4..18db4f11a69d8ca776da7ff80779c656d9a4892b 100644 (file)
@@ -160,8 +160,8 @@ Note that you can use <code>thetaSketch</code> aggregator on columns which were
 <h3 id="aggregators">Aggregators</h3>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;thetaSketch&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;me</span><span class="kc">tr</span><span class="err">ic_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>  
+  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;metric_name&gt;</span><span class="p">,</span>  
   <span class="nt">&quot;isInputThetaSketch&quot;</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
   <span class="nt">&quot;size&quot;</span><span class="p">:</span> <span class="mi">16384</span>
  <span class="p">}</span>
@@ -205,17 +205,17 @@ Note that you can use <code>thetaSketch</code> aggregator on columns which were
 <h4 id="sketch-estimator">Sketch Estimator</h4>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;thetaSketchEstimate&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="err">o</span><span class="kc">f</span> <span class="kc">t</span><span class="err">ype</span> <span class="kc">f</span><span class="err">ieldAccess</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">Ske</span><span class="kc">t</span><span class="err">ch</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">o</span><span class="kc">f</span> <span class="kc">t</span><span class="err">ype</span> <span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">Ske</span><span class="kc">t</span><span class="err">chSe</span><span class="kc">t</span><span class="err">Op&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">of</span> <span class="err">type</span> <span class="err">fieldAccess</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">thetaSketch</span> <span class="err">aggregator</span> <span class="err">or</span> <span class="err">that</span> <span class="err">of</span> <span class="err">type</span> <span class="err">thetaSketchSetOp&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="sketch-operations">Sketch Operations</h4>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;thetaSketchSetOp&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
   <span class="nt">&quot;func&quot;</span><span class="p">:</span> <span class="err">&lt;UNION|INTERSECT|NOT&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fields&quot;</span>  <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">o</span><span class="kc">f</span> <span class="kc">f</span><span class="err">ieldAccess</span> <span class="kc">t</span><span class="err">ype</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="kc">t</span><span class="err">o</span> <span class="err">access</span> <span class="kc">t</span><span class="err">he</span> <span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">Ske</span><span class="kc">t</span><span class="err">ch</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="err">or</span> <span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">Ske</span><span class="kc">t</span><span class="err">chSe</span><span class="kc">t</span><span class="err">Op</span> <span class="kc">t</span><span class="err">ype</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="kc">t</span><span class="err">o</span> <span class="err">allow</span> <span class="err">arbi</span><span class="kc">trar</span><span class="err">y</span> <span class="err">combi</span><span class="kc">nat</span><span class="err">io</span><span class="kc">n</span> <span class="err">o</span><span class="kc">f</span> <span class="err">se</span><span class="kc">t</span> <span class="err">opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;size&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="mi">16384</span> <span class="err">by</span> <span class="err">de</span><span class="kc">fault</span><span class="p">,</span> <span class="err">mus</span><span class="kc">t</span> <span class="err">be</span> <span class="err">max</span> <span class="err">o</span><span class="kc">f</span> <span class="err">size</span> <span class="kc">fr</span><span class="err">om</span> <span class="err">ske</span><span class="kc">t</span><span class="err">ches</span> <span class="err">i</span><span class="kc">n</span> <span class="kc">f</span><span class="err">ields</span> <span class="err">i</span><span class="kc">n</span><span class="err">pu</span><span class="kc">t</span><span class="err">&gt;</span>
+  <span class="nt">&quot;fields&quot;</span>  <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">of</span> <span class="err">fieldAccess</span> <span class="err">type</span> <span class="err">post</span> <span class="err">aggregators</span> <span class="err">to</span> <span class="err">access</span> <span class="err">the</span> <span class="err">thetaSketch</span> <span class="err">aggregators</span> <span class="err">or</span> <span class="err">thetaSketchSetOp</span> <span class="err">type</span> <span class="err">post</span> <span class="err">aggregators</span> <span class="err">to</span> <span class="err">allow</span> <span class="err">arbitrary</span> <span class="err">combination</span> <span class="err">of</span> <span class="err">set</span> <span class="err">operations&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;size&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="mi">16384</span> <span class="err">by</span> <span class="err">default</span><span class="p">,</span> <span class="err">must</span> <span class="err">be</span> <span class="err">max</span> <span class="err">of</span> <span class="err">size</span> <span class="err">from</span> <span class="err">sketches</span> <span class="err">in</span> <span class="err">fields</span> <span class="err">input&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h3 id="examples">Examples</h3>
index 87ea4c10ce79bd4b5bb8ec6c8d22324a01ce47a4..596b33de2d8fb49ca5fb06edb85ebc316d92933f 100644 (file)
 <h3 id="aggregators">Aggregators</h3>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketch&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;me</span><span class="kc">tr</span><span class="err">ic_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;nominalEntries&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">nu</span><span class="err">mber&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;numberOfValues&quot;</span> <span class="p">:</span> <span class="err">&lt;</span><span class="kc">nu</span><span class="err">mber&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;metricColumns&quot;</span> <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">o</span><span class="kc">f</span> <span class="err">s</span><span class="kc">tr</span><span class="err">i</span><span class="kc">n</span><span class="err">gs&gt;</span>
+  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;metric_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;nominalEntries&quot;</span><span class="p">:</span> <span class="err">&lt;number&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;numberOfValues&quot;</span> <span class="p">:</span> <span class="err">&lt;number&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;metricColumns&quot;</span> <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">of</span> <span class="err">strings&gt;</span>
  <span class="p">}</span>
 </code></pre></div>
 <table><thead>
 <p>Returns a distinct count estimate from a given ArrayOfDoublesSketch.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToEstimate&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span><span class="kc">n</span> <span class="err">ArrayO</span><span class="kc">f</span><span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">an</span> <span class="err">ArrayOfDoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="estimate-of-the-number-of-distinct-keys-with-error-bounds">Estimate of the number of distinct keys with error bounds</h4>
 <p>Returns a distinct count estimate and error bounds from a given ArrayOfDoublesSketch. The result will be three double values: estimate of the number of distinct keys, lower bound and upper bound. The bounds are provided at the given number of standard deviations (optional, defaults to 1). This must be an integer value of 1, 2 or 3 corresponding to approximately 68.3%, 95.4% and 99.7% confidence intervals.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToEstimateAndBounds&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span><span class="kc">n</span>  <span class="err">ArrayO</span><span class="kc">f</span><span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span><span class="p">,</span>
-  <span class="s2">&quot;numStdDevs&quot;</span><span class="p">,</span> <span class="err">&lt;</span><span class="kc">nu</span><span class="err">mber</span> <span class="kc">fr</span><span class="err">om</span> <span class="mi">1</span> <span class="kc">t</span><span class="err">o</span> <span class="mi">3</span><span class="err">&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">an</span>  <span class="err">ArrayOfDoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;numStdDevs&quot;</span><span class="p">,</span> <span class="err">&lt;number</span> <span class="err">from</span> <span class="err">1</span> <span class="err">to</span> <span class="err">3&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="number-of-retained-entries">Number of retained entries</h4>
 <p>Returns the number of retained entries from a given ArrayOfDoublesSketch.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToNumEntries&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span><span class="kc">n</span> <span class="err">ArrayO</span><span class="kc">f</span><span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">an</span> <span class="err">ArrayOfDoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="mean-values-for-each-column">Mean values for each column</h4>
 <p>Returns a list of mean values from a given ArrayOfDoublesSketch. The result will be N double values, where N is the number of double values kept in the sketch per key.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToMeans&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="variance-values-for-each-column">Variance values for each column</h4>
 <p>Returns a list of variance values from a given ArrayOfDoublesSketch. The result will be N double values, where N is the number of double values kept in the sketch per key.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToVariances&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="quantiles-sketch-from-a-column">Quantiles sketch from a column</h4>
 </ul>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToQuantilesSketch&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span> <span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="err">&lt;</span><span class="kc">nu</span><span class="err">mber&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;k&quot;</span> <span class="p">:</span> <span class="err">&lt;parame</span><span class="kc">ter</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">de</span><span class="kc">ter</span><span class="err">mi</span><span class="kc">nes</span> <span class="kc">t</span><span class="err">he</span> <span class="err">accuracy</span> <span class="err">a</span><span class="kc">n</span><span class="err">d</span> <span class="err">size</span> <span class="err">o</span><span class="kc">f</span> <span class="kc">t</span><span class="err">he</span> <span class="err">qua</span><span class="kc">nt</span><span class="err">iles</span> <span class="err">ske</span><span class="kc">t</span><span class="err">ch&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">a</span> <span class="err">DoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="err">&lt;number&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;k&quot;</span> <span class="p">:</span> <span class="err">&lt;parameter</span> <span class="err">that</span> <span class="err">determines</span> <span class="err">the</span> <span class="err">accuracy</span> <span class="err">and</span> <span class="err">size</span> <span class="err">of</span> <span class="err">the</span> <span class="err">quantiles</span> <span class="err">sketch&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="set-operations">Set Operations</h4>
 <p>Returns a result of a specified set operation on the given array of sketches. Supported operations are: union, intersection and set difference (UNION, INTERSECT, NOT).</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchSetOp&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
   <span class="nt">&quot;operation&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="s2">&quot;UNION&quot;</span><span class="err">|</span><span class="s2">&quot;INTERSECT&quot;</span><span class="err">|</span><span class="s2">&quot;NOT&quot;</span><span class="err">&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fields&quot;</span>  <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">o</span><span class="kc">f</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="kc">t</span><span class="err">o</span> <span class="err">access</span> <span class="err">ske</span><span class="kc">t</span><span class="err">ch</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="err">or</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="kc">t</span><span class="err">o</span> <span class="err">allow</span> <span class="err">arbi</span><span class="kc">trar</span><span class="err">y</span> <span class="err">combi</span><span class="kc">nat</span><span class="err">io</span><span class="kc">n</span> <span class="err">o</span><span class="kc">f</span> <span class="err">se</span><span class="kc">t</span> <span class="err">opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;nominalEntries&quot;</span> <span class="p">:</span> <span class="err">&lt;parame</span><span class="kc">ter</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">de</span><span class="kc">ter</span><span class="err">mi</span><span class="kc">nes</span> <span class="kc">t</span><span class="err">he</span> <span class="err">accuracy</span> <span class="err">a</span><span class="kc">n</span><span class="err">d</span> <span class="err">size</span> <span class="err">o</span><span class="kc">f</span> <span class="kc">t</span><span class="err">he</span> <span class="err">ske</span><span class="kc">t</span><span class="err">ch&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;numberOfValues&quot;</span> <span class="p">:</span> <span class="err">&lt;</span><span class="kc">nu</span><span class="err">mber</span> <span class="err">o</span><span class="kc">f</span> <span class="err">values</span> <span class="err">associa</span><span class="kc">te</span><span class="err">d</span> <span class="err">wi</span><span class="kc">t</span><span class="err">h</span> <span class="err">each</span> <span class="err">dis</span><span class="kc">t</span><span class="err">i</span><span class="kc">n</span><span class="err">c</span><span class="kc">t</span> <span class="err">key&gt;</span>
+  <span class="nt">&quot;fields&quot;</span>  <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">of</span> <span class="err">post</span> <span class="err">aggregators</span> <span class="err">to</span> <span class="err">access</span> <span class="err">sketch</span> <span class="err">aggregators</span> <span class="err">or</span> <span class="err">post</span> <span class="err">aggregators</span> <span class="err">to</span> <span class="err">allow</span> <span class="err">arbitrary</span> <span class="err">combination</span> <span class="err">of</span> <span class="err">set</span> <span class="err">operations&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;nominalEntries&quot;</span> <span class="p">:</span> <span class="err">&lt;parameter</span> <span class="err">that</span> <span class="err">determines</span> <span class="err">the</span> <span class="err">accuracy</span> <span class="err">and</span> <span class="err">size</span> <span class="err">of</span> <span class="err">the</span> <span class="err">sketch&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;numberOfValues&quot;</span> <span class="p">:</span> <span class="err">&lt;number</span> <span class="err">of</span> <span class="err">values</span> <span class="err">associated</span> <span class="err">with</span> <span class="err">each</span> <span class="err">distinct</span> <span class="err">key&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="students-t-test">Student&#39;s t-test</h4>
 <p>Performs Student&#39;s t-test and returns a list of p-values given two instances of ArrayOfDoublesSketch. The result will be N double values, where N is the number of double values kept in the sketch per key. See <a href="http://commons.apache.org/proper/commons-math/javadocs/api-3.4/org/apache/commons/math3/stat/inference/TTest.html">t-test documentation</a>.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchTTest&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fields&quot;</span>  <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">wi</span><span class="kc">t</span><span class="err">h</span> <span class="kc">t</span><span class="err">wo</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="kc">t</span><span class="err">o</span> <span class="err">access</span> <span class="err">ske</span><span class="kc">t</span><span class="err">ch</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="err">or</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors</span> <span class="err">re</span><span class="kc">ferr</span><span class="err">i</span><span class="kc">n</span><span class="err">g</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span><span class="kc">n</span> <span class="err">ArrayO</span><span class="kc">f</span><span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fields&quot;</span>  <span class="p">:</span> <span class="err">&lt;array</span> <span class="err">with</span> <span class="err">two</span> <span class="err">post</span> <span class="err">aggregators</span> <span class="err">to</span> <span class="err">access</span> <span class="err">sketch</span> <span class="err">aggregators</span> <span class="err">or</span> <span class="err">post</span> <span class="err">aggregators</span> <span class="err">referring</span> <span class="err">to</span> <span class="err">an</span> <span class="err">ArrayOfDoublesSketch&gt;</span><span class="p">,</span>
 <span class="p">}</span>
 </code></pre></div>
 <h4 id="sketch-summary">Sketch summary</h4>
 <p>Returns a human-readable summary of a given ArrayOfDoublesSketch. This is a string returned by toString() method of the sketch. This can be useful for debugging.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span>  <span class="p">:</span> <span class="s2">&quot;arrayOfDoublesSketchToString&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span> <span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or</span> <span class="kc">t</span><span class="err">ha</span><span class="kc">t</span> <span class="err">re</span><span class="kc">fers</span> <span class="kc">t</span><span class="err">o</span> <span class="err">a</span><span class="kc">n</span> <span class="err">ArrayO</span><span class="kc">f</span><span class="err">DoublesSke</span><span class="kc">t</span><span class="err">ch</span> <span class="err">(</span><span class="kc">f</span><span class="err">ieldAccess</span> <span class="err">or</span> <span class="err">a</span><span class="kc">n</span><span class="err">o</span><span class="kc">t</span><span class="err">her</span> <span class="err">pos</span><span class="kc">t</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">or)&gt;</span>
+  <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="err">&lt;output</span> <span class="err">name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;field&quot;</span>  <span class="p">:</span> <span class="err">&lt;post</span> <span class="err">aggregator</span> <span class="err">that</span> <span class="err">refers</span> <span class="err">to</span> <span class="err">an</span> <span class="err">ArrayOfDoublesSketch</span> <span class="err">(fieldAccess</span> <span class="err">or</span> <span class="err">another</span> <span class="err">post</span> <span class="err">aggregator)&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
         </div>
index c1dc17a9199066251a291a868bf7c35781ab0f87..ba62c0fbe6a89ffde0193474dec1f60ceb35693e 100644 (file)
 <p>This firehose connects directly to the twitter spritzer data stream.</p>
 
 <p>Sample spec:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span> <span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;twitzer&quot;</span><span class="p">,</span>
     <span class="nt">&quot;maxEventCount&quot;</span><span class="p">:</span> <span class="mi">-1</span><span class="p">,</span>
     <span class="nt">&quot;maxRunMinutes&quot;</span><span class="p">:</span> <span class="mi">0</span>
index 99b17a48c247f9c7a6aa2c6f9e4aecc40f6c9062..436d0d6d947adf23fae201f1e0c9a61a741e1cfa 100644 (file)
 <p>This firehose acts as a Kafka 0.8.x consumer and ingests data from Kafka.</p>
 
 <p>Sample spec:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span><span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;kafka-0.8&quot;</span><span class="p">,</span>
   <span class="nt">&quot;consumerProps&quot;</span><span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;zookeeper.connect&quot;</span><span class="p">:</span> <span class="s2">&quot;localhost:2181&quot;</span><span class="p">,</span>
index e681c0422d1ed10af0ae7ac1b74d1d7625bdf734..8b0781a86350bac5ac60d1eb41135a84e1fd63c6 100644 (file)
@@ -459,7 +459,7 @@ bat,something2,baz
 truck,something3,buck
 </code></pre></div>
 <p><em>example namespaceParseSpec</em></p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;namespaceParseSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;namespaceParseSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;csv&quot;</span><span class="p">,</span>
   <span class="nt">&quot;columns&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">,</span><span class="s2">&quot;somethingElse&quot;</span><span class="p">,</span><span class="s2">&quot;key&quot;</span><span class="p">],</span>
   <span class="nt">&quot;keyColumn&quot;</span><span class="p">:</span> <span class="s2">&quot;key&quot;</span><span class="p">,</span>
@@ -530,7 +530,7 @@ bat|something,2|baz
 truck|something,3|buck
 </code></pre></div>
 <p><em>example namespaceParseSpec</em></p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;namespaceParseSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;namespaceParseSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;tsv&quot;</span><span class="p">,</span>
   <span class="nt">&quot;columns&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">,</span><span class="s2">&quot;somethingElse&quot;</span><span class="p">,</span><span class="s2">&quot;key&quot;</span><span class="p">],</span>
   <span class="nt">&quot;keyColumn&quot;</span><span class="p">:</span> <span class="s2">&quot;key&quot;</span><span class="p">,</span>
@@ -568,7 +568,7 @@ truck|something,3|buck
 <span class="p">{</span><span class="nt">&quot;key&quot;</span><span class="p">:</span> <span class="s2">&quot;buck&quot;</span><span class="p">,</span> <span class="nt">&quot;somethingElse&quot;</span><span class="p">:</span> <span class="s2">&quot;something&quot;</span><span class="p">,</span> <span class="nt">&quot;value&quot;</span><span class="p">:</span> <span class="s2">&quot;truck&quot;</span><span class="p">}</span>
 </code></pre></div>
 <p><em>example namespaceParseSpec</em></p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;namespaceParseSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;namespaceParseSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;customJson&quot;</span><span class="p">,</span>
   <span class="nt">&quot;keyFieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;key&quot;</span><span class="p">,</span>
   <span class="nt">&quot;valueFieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;value&quot;</span>
@@ -587,7 +587,7 @@ will not be included in the lookup.</p>
 <span class="p">{</span><span class="nt">&quot;buck&quot;</span><span class="p">:</span> <span class="s2">&quot;truck&quot;</span><span class="p">}</span>
 </code></pre></div>
 <p><em>example namespaceParseSpec</em></p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;namespaceParseSpec&quot;</span><span class="p">:{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;namespaceParseSpec&quot;</span><span class="err">:</span><span class="p">{</span>
   <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;simpleJson&quot;</span>
 <span class="p">}</span>
 </code></pre></div>
index f8a4962f7976c361ab082a20cd4736c61505e83e..e6a7120fc51efbc1f7b597c6cf8de47a904f73d3 100644 (file)
@@ -274,7 +274,7 @@ This firehose is <em>splittable</em> and can be used by <a href="../../ingestion
 Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p>
 
 <p>Sample spec:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;firehose&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;firehose&quot;</span> <span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;static-s3&quot;</span><span class="p">,</span>
     <span class="nt">&quot;uris&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;s3://foo/bar/file.gz&quot;</span><span class="p">,</span> <span class="s2">&quot;s3://bar/foo/file2.gz&quot;</span><span class="p">]</span>
 <span class="p">}</span>
index 32be515b3b99433d097231471f49efb423bc1368..8eb3312a25278a621b421e1e2a29d6551d1c3d66 100644 (file)
@@ -180,18 +180,18 @@ then any input rows missing the value will be considered to have a value of 0.</
 <p>User can specify expected input type as one of &quot;float&quot;, &quot;long&quot;, &quot;variance&quot; for ingestion, which is by default &quot;float&quot;.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;variance&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;me</span><span class="kc">tr</span><span class="err">ic_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;inputType&quot;</span> <span class="p">:</span> <span class="err">&lt;i</span><span class="kc">n</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">t</span><span class="err">ype&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;estimator&quot;</span> <span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tr</span><span class="err">i</span><span class="kc">n</span><span class="err">g&gt;</span>
+  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;metric_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;inputType&quot;</span> <span class="p">:</span> <span class="err">&lt;input_type&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;estimator&quot;</span> <span class="p">:</span> <span class="err">&lt;string&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <p>To query for results, &quot;variance&quot; aggregator with &quot;variance&quot; input type or simply a &quot;varianceFold&quot; aggregator must be included in the query.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;varianceFold&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="err">_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;me</span><span class="kc">tr</span><span class="err">ic_</span><span class="kc">na</span><span class="err">me&gt;</span><span class="p">,</span>
-  <span class="nt">&quot;estimator&quot;</span> <span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tr</span><span class="err">i</span><span class="kc">n</span><span class="err">g&gt;</span>
+  <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="err">&lt;output_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;fieldName&quot;</span> <span class="p">:</span> <span class="err">&lt;metric_name&gt;</span><span class="p">,</span>
+  <span class="nt">&quot;estimator&quot;</span> <span class="p">:</span> <span class="err">&lt;string&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <table><thead>
@@ -215,7 +215,7 @@ then any input rows missing the value will be considered to have a value of 0.</
   <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;stddev&quot;</span><span class="p">,</span>
   <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;output_name&gt;&quot;</span><span class="p">,</span>
   <span class="nt">&quot;fieldName&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;aggregator_name&gt;&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;estimator&quot;</span><span class="p">:</span> <span class="err">&lt;s</span><span class="kc">tr</span><span class="err">i</span><span class="kc">n</span><span class="err">g&gt;</span>
+  <span class="nt">&quot;estimator&quot;</span><span class="p">:</span> <span class="err">&lt;string&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h2 id="query-examples">Query Examples:</h2>
index aab4154f70f5f6003e1a4f3f59bb025d9ce3897a..47df51cb091f1c2a2df54cf0bfbc607ae6ba2a91 100644 (file)
@@ -175,10 +175,10 @@ Please note S.E. stands for standard error where </p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;zscore2sample&quot;</span><span class="p">,</span>
   <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;output_name&gt;&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;successCount1&quot;</span><span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span><span class="err">_aggrega</span><span class="kc">t</span><span class="err">or&gt;</span> <span class="err">success</span> <span class="err">cou</span><span class="kc">nt</span> <span class="err">o</span><span class="kc">f</span> <span class="err">sample</span> <span class="mi">1</span><span class="p">,</span>
-  <span class="nt">&quot;sample1Size&quot;</span><span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span><span class="err">_aggregaror&gt;</span> <span class="err">sample</span> <span class="mi">1</span> <span class="err">size</span><span class="p">,</span>
-  <span class="nt">&quot;successCount2&quot;</span><span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span><span class="err">_aggrega</span><span class="kc">t</span><span class="err">or&gt;</span> <span class="err">success</span> <span class="err">cou</span><span class="kc">nt</span> <span class="err">o</span><span class="kc">f</span> <span class="err">sample</span> <span class="mi">2</span><span class="p">,</span>
-  <span class="nt">&quot;sample2Size&quot;</span> <span class="p">:</span> <span class="err">&lt;pos</span><span class="kc">t</span><span class="err">_aggrega</span><span class="kc">t</span><span class="err">or&gt;</span> <span class="err">sample</span> <span class="mi">2</span> <span class="err">size</span>
+  <span class="nt">&quot;successCount1&quot;</span><span class="p">:</span> <span class="err">&lt;post_aggregator&gt;</span> <span class="err">success</span> <span class="err">count</span> <span class="err">of</span> <span class="err">sample</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="nt">&quot;sample1Size&quot;</span><span class="p">:</span> <span class="err">&lt;post_aggregaror&gt;</span> <span class="err">sample</span> <span class="mi">1</span> <span class="err">size</span><span class="p">,</span>
+  <span class="nt">&quot;successCount2&quot;</span><span class="p">:</span> <span class="err">&lt;post_aggregator&gt;</span> <span class="err">success</span> <span class="err">count</span> <span class="err">of</span> <span class="err">sample</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="nt">&quot;sample2Size&quot;</span> <span class="p">:</span> <span class="err">&lt;post_aggregator&gt;</span> <span class="err">sample</span> <span class="mi">2</span> <span class="err">size</span>
 <span class="p">}</span>
 </code></pre></div>
 <p>Please note the post aggregator will be converting binary variables to continuous variables for two population proportions.  Specifically</p>
@@ -199,7 +199,7 @@ Please note S.E. stands for standard error where </p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
   <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;pvalue2tailedZtest&quot;</span><span class="p">,</span>
   <span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;output_name&gt;&quot;</span><span class="p">,</span>
-  <span class="nt">&quot;zScore&quot;</span><span class="p">:</span> <span class="err">&lt;zscore</span> <span class="err">pos</span><span class="kc">t</span><span class="err">_aggrega</span><span class="kc">t</span><span class="err">or&gt;</span>
+  <span class="nt">&quot;zScore&quot;</span><span class="p">:</span> <span class="err">&lt;zscore</span> <span class="err">post_aggregator&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h2 id="example-usage">Example Usage</h2>
index 7273d2cf094a078a36e5c0c064d29989727f62db..1c74fa32540dcb170f1bfc995502aa5d0572358f 100644 (file)
 <h1 id="spatial-filters">Spatial Filters</h1>
 
 <p>The grammar for a spatial filter is as follows:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;filter&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;filter&quot;</span> <span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;spatial&quot;</span><span class="p">,</span>
     <span class="nt">&quot;dimension&quot;</span><span class="p">:</span> <span class="s2">&quot;spatialDim&quot;</span><span class="p">,</span>
     <span class="nt">&quot;bound&quot;</span><span class="p">:</span> <span class="p">{</span>
index 81779d3b8b6737ec0868104b427d738ffe52f9d6..8b8f6dde38b70ae3dcf379a78ca139b180613fbe 100644 (file)
@@ -208,13 +208,13 @@ and <code>org.apache.druid.query.aggregation.BufferAggregator</code>.</li>
 <p>Check the <code>azure-storage</code>, <code>google-storage</code>, <code>cassandra-storage</code>, <code>hdfs-storage</code> and <code>s3-extensions</code> modules for examples of how to do this.</p>
 
 <p>The basic idea behind the extension is that you need to add bindings for your DataSegmentPusher and DataSegmentPuller objects.  The way to add them is something like (taken from HdfsStorageDruidModule)</p>
-<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="n">Binders</span><span class="p">.</span><span class="na">dataSegmentPullerBinder</span><span class="p">(</span><span class="n">binder</span><span class="p">)</span>
-       <span class="p">.</span><span class="na">addBinding</span><span class="p">(</span><span class="s">&quot;hdfs&quot;</span><span class="p">)</span>
-       <span class="p">.</span><span class="na">to</span><span class="p">(</span><span class="n">HdfsDataSegmentPuller</span><span class="p">.</span><span class="na">class</span><span class="p">).</span><span class="na">in</span><span class="p">(</span><span class="n">LazySingleton</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
+<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="n">Binders</span><span class="o">.</span><span class="na">dataSegmentPullerBinder</span><span class="o">(</span><span class="n">binder</span><span class="o">)</span>
+       <span class="o">.</span><span class="na">addBinding</span><span class="o">(</span><span class="s">&quot;hdfs&quot;</span><span class="o">)</span>
+       <span class="o">.</span><span class="na">to</span><span class="o">(</span><span class="n">HdfsDataSegmentPuller</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">in</span><span class="o">(</span><span class="n">LazySingleton</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
 
-<span class="n">Binders</span><span class="p">.</span><span class="na">dataSegmentPusherBinder</span><span class="p">(</span><span class="n">binder</span><span class="p">)</span>
-       <span class="p">.</span><span class="na">addBinding</span><span class="p">(</span><span class="s">&quot;hdfs&quot;</span><span class="p">)</span>
-       <span class="p">.</span><span class="na">to</span><span class="p">(</span><span class="n">HdfsDataSegmentPusher</span><span class="p">.</span><span class="na">class</span><span class="p">).</span><span class="na">in</span><span class="p">(</span><span class="n">LazySingleton</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
+<span class="n">Binders</span><span class="o">.</span><span class="na">dataSegmentPusherBinder</span><span class="o">(</span><span class="n">binder</span><span class="o">)</span>
+       <span class="o">.</span><span class="na">addBinding</span><span class="o">(</span><span class="s">&quot;hdfs&quot;</span><span class="o">)</span>
+       <span class="o">.</span><span class="na">to</span><span class="o">(</span><span class="n">HdfsDataSegmentPusher</span><span class="o">.</span><span class="na">class</span><span class="o">).</span><span class="na">in</span><span class="o">(</span><span class="n">LazySingleton</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
 </code></pre></div>
 <p><code>Binders.dataSegment*Binder()</code> is a call provided by the druid-api jar which sets up a Guice multibind &quot;MapBinder&quot;.  If that doesn&#39;t make sense, don&#39;t worry about it, just think of it as a magical incantation.</p>
 
@@ -284,12 +284,12 @@ T00:00:00.000Z/2015-04-14T02:41:09.484Z/0/index.zip] to [/opt/druid/zk_druid/dde
 
 <p>Adding a Firehose is done almost entirely through the Jackson Modules instead of Guice.  Specifically, note the implementation</p>
 <div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="nd">@Override</span>
-<span class="kd">public</span> <span class="n">List</span><span class="o">&lt;?</span> <span class="kd">extends</span> <span class="n">Module</span><span class="o">&gt;</span> <span class="nf">getJacksonModules</span><span class="p">()</span>
-<span class="p">{</span>
-  <span class="k">return</span> <span class="n">ImmutableList</span><span class="p">.</span><span class="na">of</span><span class="p">(</span>
-          <span class="k">new</span> <span class="n">SimpleModule</span><span class="p">().</span><span class="na">registerSubtypes</span><span class="p">(</span><span class="k">new</span> <span class="n">NamedType</span><span class="p">(</span><span class="n">StaticS3FirehoseFactory</span><span class="p">.</span><span class="na">class</span><span class="p">,</span> <span class="s">&quot;static-s3&quot;</span><span class="p">))</span>
-  <span class="p">);</span>
-<span class="p">}</span>
+<span class="kd">public</span> <span class="n">List</span><span class="o">&lt;?</span> <span class="kd">extends</span> <span class="n">Module</span><span class="o">&gt;</span> <span class="nf">getJacksonModules</span><span class="o">()</span>
+<span class="o">{</span>
+  <span class="k">return</span> <span class="n">ImmutableList</span><span class="o">.</span><span class="na">of</span><span class="o">(</span>
+          <span class="k">new</span> <span class="n">SimpleModule</span><span class="o">().</span><span class="na">registerSubtypes</span><span class="o">(</span><span class="k">new</span> <span class="n">NamedType</span><span class="o">(</span><span class="n">StaticS3FirehoseFactory</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">&quot;static-s3&quot;</span><span class="o">))</span>
+  <span class="o">);</span>
+<span class="o">}</span>
 </code></pre></div>
 <p>This is registering the FirehoseFactory with Jackson&#39;s polymorphic serde layer.  More concretely, having this will mean that if you specify a <code>&quot;firehose&quot;: { &quot;type&quot;: &quot;static-s3&quot;, ... }</code> in your realtime config, then the system will load this FirehoseFactory for your firehose.</p>
 
@@ -314,32 +314,32 @@ T00:00:00.000Z/2015-04-14T02:41:09.484Z/0/index.zip] to [/opt/druid/zk_druid/dde
 </ol>
 
 <p>Registering these uses the same general strategy as a deep storage mechanism does.  You do something like</p>
-<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="n">DruidBinders</span><span class="p">.</span><span class="na">queryToolChestBinder</span><span class="p">(</span><span class="n">binder</span><span class="p">)</span>
-            <span class="p">.</span><span class="na">addBinding</span><span class="p">(</span><span class="n">SegmentMetadataQuery</span><span class="p">.</span><span class="na">class</span><span class="p">)</span>
-            <span class="p">.</span><span class="na">to</span><span class="p">(</span><span class="n">SegmentMetadataQueryQueryToolChest</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
+<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="n">DruidBinders</span><span class="o">.</span><span class="na">queryToolChestBinder</span><span class="o">(</span><span class="n">binder</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">addBinding</span><span class="o">(</span><span class="n">SegmentMetadataQuery</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">to</span><span class="o">(</span><span class="n">SegmentMetadataQueryQueryToolChest</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
 
-<span class="n">DruidBinders</span><span class="p">.</span><span class="na">queryRunnerFactoryBinder</span><span class="p">(</span><span class="n">binder</span><span class="p">)</span>
-            <span class="p">.</span><span class="na">addBinding</span><span class="p">(</span><span class="n">SegmentMetadataQuery</span><span class="p">.</span><span class="na">class</span><span class="p">)</span>
-            <span class="p">.</span><span class="na">to</span><span class="p">(</span><span class="n">SegmentMetadataQueryRunnerFactory</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
+<span class="n">DruidBinders</span><span class="o">.</span><span class="na">queryRunnerFactoryBinder</span><span class="o">(</span><span class="n">binder</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">addBinding</span><span class="o">(</span><span class="n">SegmentMetadataQuery</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">to</span><span class="o">(</span><span class="n">SegmentMetadataQueryRunnerFactory</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
 </code></pre></div>
 <p>The first one binds the SegmentMetadataQueryQueryToolChest for usage when a SegmentMetadataQuery is used.  The second one does the same thing but for the QueryRunnerFactory instead.</p>
 
 <h3 id="adding-new-jersey-resources">Adding new Jersey resources</h3>
 
 <p>Adding new Jersey resources to a module requires calling the following code to bind the resource in the module:</p>
-<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="n">Jerseys</span><span class="p">.</span><span class="na">addResource</span><span class="p">(</span><span class="n">binder</span><span class="p">,</span> <span class="n">NewResource</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
+<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span><span class="n">Jerseys</span><span class="o">.</span><span class="na">addResource</span><span class="o">(</span><span class="n">binder</span><span class="o">,</span> <span class="n">NewResource</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
 </code></pre></div>
 <h3 id="adding-a-new-password-provider-implementation">Adding a new Password Provider implementation</h3>
 
 <p>You will need to implement <code>org.apache.druid.metadata.PasswordProvider</code> interface. For every place where Druid uses PasswordProvider, a new instance of the implementation will be created,
 thus make sure all the necessary information required for fetching each password is supplied during object instantiation.
 In your implementation of <code>org.apache.druid.initialization.DruidModule</code>, <code>getJacksonModules</code> should look something like this -</p>
-<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span>    <span class="k">return</span> <span class="n">ImmutableList</span><span class="p">.</span><span class="na">of</span><span class="p">(</span>
-        <span class="k">new</span> <span class="n">SimpleModule</span><span class="p">(</span><span class="s">&quot;SomePasswordProviderModule&quot;</span><span class="p">)</span>
-            <span class="p">.</span><span class="na">registerSubtypes</span><span class="p">(</span>
-                <span class="k">new</span> <span class="n">NamedType</span><span class="p">(</span><span class="n">SomePasswordProvider</span><span class="p">.</span><span class="na">class</span><span class="p">,</span> <span class="s">&quot;some&quot;</span><span class="p">)</span>
-            <span class="p">)</span>
-    <span class="p">);</span>
+<div class="highlight"><pre><code class="language-java" data-lang="java"><span></span>    <span class="k">return</span> <span class="n">ImmutableList</span><span class="o">.</span><span class="na">of</span><span class="o">(</span>
+        <span class="k">new</span> <span class="n">SimpleModule</span><span class="o">(</span><span class="s">&quot;SomePasswordProviderModule&quot;</span><span class="o">)</span>
+            <span class="o">.</span><span class="na">registerSubtypes</span><span class="o">(</span>
+                <span class="k">new</span> <span class="n">NamedType</span><span class="o">(</span><span class="n">SomePasswordProvider</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">&quot;some&quot;</span><span class="o">)</span>
+            <span class="o">)</span>
+    <span class="o">);</span>
 </code></pre></div>
 <p>where <code>SomePasswordProvider</code> is the implementation of <code>PasswordProvider</code> interface, you can have a look at <code>org.apache.druid.metadata.EnvironmentVariablePasswordProvider</code> for example.</p>
 
index fef9b88ebef791e819e7b449676220fba27dfd38..5217f2e800969954d3d828703fec26ccde96eb41 100644 (file)
 <p>Compaction tasks merge all segments of the given interval. The syntax is:</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;compact&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_id&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_da</span><span class="kc">tas</span><span class="err">ource&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;interval&quot;</span><span class="p">:</span> <span class="err">&lt;i</span><span class="kc">nter</span><span class="err">val</span> <span class="kc">t</span><span class="err">o</span> <span class="err">speci</span><span class="kc">f</span><span class="err">y</span> <span class="err">segme</span><span class="kc">nts</span> <span class="kc">t</span><span class="err">o</span> <span class="err">be</span> <span class="err">merged&gt;</span><span class="p">,</span>
-    <span class="s2">&quot;dimensions&quot;</span> <span class="err">&lt;cus</span><span class="kc">t</span><span class="err">om</span> <span class="err">dime</span><span class="kc">ns</span><span class="err">io</span><span class="kc">ns</span><span class="err">Spec&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;task_id&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;task_datasource&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;interval&quot;</span><span class="p">:</span> <span class="err">&lt;interval</span> <span class="err">to</span> <span class="err">specify</span> <span class="err">segments</span> <span class="err">to</span> <span class="err">be</span> <span class="err">merged&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dimensions&quot;</span> <span class="err">&lt;custom</span> <span class="err">dimensionsSpec&gt;</span><span class="p">,</span>
     <span class="nt">&quot;keepSegmentGranularity&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">true</span> <span class="err">or</span> <span class="kc">false</span><span class="err">&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;targetCompactionSizeBytes&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span> <span class="err">size</span> <span class="err">o</span><span class="kc">f</span> <span class="err">compac</span><span class="kc">te</span><span class="err">d</span> <span class="err">segme</span><span class="kc">nts</span><span class="err">&gt;</span>
-    <span class="s2">&quot;tuningConfig&quot;</span> <span class="err">&lt;i</span><span class="kc">n</span><span class="err">dex</span> <span class="kc">tas</span><span class="err">k</span> <span class="kc">tun</span><span class="err">i</span><span class="kc">n</span><span class="err">gCo</span><span class="kc">nf</span><span class="err">ig&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k</span> <span class="err">co</span><span class="kc">nte</span><span class="err">x</span><span class="kc">t</span><span class="err">&gt;</span>
+    <span class="nt">&quot;targetCompactionSizeBytes&quot;</span><span class="p">:</span> <span class="err">&lt;target</span> <span class="err">size</span> <span class="err">of</span> <span class="err">compacted</span> <span class="err">segments&gt;</span>
+    <span class="s2">&quot;tuningConfig&quot;</span> <span class="err">&lt;index</span> <span class="err">task</span> <span class="err">tuningConfig&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;task</span> <span class="err">context&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <table><thead>
index 8d49131e047a9c7efbd6d7904ef07942040b7277..b994dfb06add64b790856871b71a6e551ef75735 100644 (file)
@@ -192,7 +192,7 @@ parsing data will not be as efficient as writing a native Java parser or using a
 <p>All forms of Druid ingestion require some form of schema object. The format of the data to be ingested is specified using the<code>parseSpec</code> entry in your <code>dataSchema</code>.</p>
 
 <h3 id="json">JSON</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;parseSpec&quot;</span><span class="p">:{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;parseSpec&quot;</span><span class="err">:</span><span class="p">{</span>
     <span class="nt">&quot;format&quot;</span> <span class="p">:</span> <span class="s2">&quot;json&quot;</span><span class="p">,</span>
     <span class="nt">&quot;timestampSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
       <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="s2">&quot;timestamp&quot;</span>
@@ -205,7 +205,7 @@ parsing data will not be as efficient as writing a native Java parser or using a
 <p>If you have nested JSON, <a href="flatten-json.html">Druid can automatically flatten it for you</a>.</p>
 
 <h3 id="csv">CSV</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;parseSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;parseSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;format&quot;</span> <span class="p">:</span> <span class="s2">&quot;csv&quot;</span><span class="p">,</span>
     <span class="nt">&quot;timestampSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
       <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="s2">&quot;timestamp&quot;</span>
@@ -234,7 +234,7 @@ tasks will fail with an exception.</p>
 <p>The <code>columns</code> field must be included and and ensure that the order of the fields matches the columns of your input data in the same order.</p>
 
 <h3 id="tsv-delimited">TSV (Delimited)</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;parseSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;parseSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
     <span class="nt">&quot;format&quot;</span> <span class="p">:</span> <span class="s2">&quot;tsv&quot;</span><span class="p">,</span>
     <span class="nt">&quot;timestampSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
       <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="s2">&quot;timestamp&quot;</span>
@@ -266,23 +266,23 @@ tasks will fail with an exception.</p>
 <p>The <code>columns</code> field must be included and and ensure that the order of the fields matches the columns of your input data in the same order.</p>
 
 <h3 id="regex">Regex</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;parseSpec&quot;</span><span class="p">:{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;parseSpec&quot;</span><span class="err">:</span><span class="p">{</span>
     <span class="nt">&quot;format&quot;</span> <span class="p">:</span> <span class="s2">&quot;regex&quot;</span><span class="p">,</span>
     <span class="nt">&quot;timestampSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
       <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="s2">&quot;timestamp&quot;</span>
     <span class="p">},</span>        
     <span class="nt">&quot;dimensionsSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
-      <span class="nt">&quot;dimensions&quot;</span> <span class="p">:</span> <span class="p">[</span><span class="err">&lt;your_lis</span><span class="kc">t</span><span class="err">_o</span><span class="kc">f</span><span class="err">_dime</span><span class="kc">ns</span><span class="err">io</span><span class="kc">ns</span><span class="err">&gt;</span><span class="p">]</span>
+      <span class="nt">&quot;dimensions&quot;</span> <span class="p">:</span> <span class="p">[</span><span class="err">&lt;your_list_of_dimensions&gt;</span><span class="p">]</span>
     <span class="p">},</span>
-    <span class="nt">&quot;columns&quot;</span> <span class="p">:</span> <span class="p">[</span><span class="err">&lt;your_colum</span><span class="kc">ns</span><span class="err">_here&gt;</span><span class="p">],</span>
-    <span class="nt">&quot;pattern&quot;</span> <span class="p">:</span> <span class="err">&lt;regex</span> <span class="err">pa</span><span class="kc">ttern</span> <span class="kc">f</span><span class="err">or</span> <span class="err">par</span><span class="kc">t</span><span class="err">i</span><span class="kc">t</span><span class="err">io</span><span class="kc">n</span><span class="err">i</span><span class="kc">n</span><span class="err">g</span> <span class="err">da</span><span class="kc">ta</span><span class="err">&gt;</span>
+    <span class="nt">&quot;columns&quot;</span> <span class="p">:</span> <span class="p">[</span><span class="err">&lt;your_columns_here&gt;</span><span class="p">],</span>
+    <span class="nt">&quot;pattern&quot;</span> <span class="p">:</span> <span class="err">&lt;regex</span> <span class="err">pattern</span> <span class="err">for</span> <span class="err">partitioning</span> <span class="err">data&gt;</span>
   <span class="p">}</span>
 </code></pre></div>
 <p>The <code>columns</code> field must match the columns of your regex matching groups in the same order. If columns are not provided, default 
 columns names (&quot;column_1&quot;, &quot;column2&quot;, ... &quot;column_n&quot;) will be assigned. Ensure that your column names include all your dimensions. </p>
 
 <h3 id="javascript">JavaScript</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;parseSpec&quot;</span><span class="p">:{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;parseSpec&quot;</span><span class="err">:</span><span class="p">{</span>
     <span class="nt">&quot;format&quot;</span> <span class="p">:</span> <span class="s2">&quot;javascript&quot;</span><span class="p">,</span>
     <span class="nt">&quot;timestampSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
       <span class="nt">&quot;column&quot;</span> <span class="p">:</span> <span class="s2">&quot;timestamp&quot;</span>
index 6e8a29d53e9b1daa47ef57c882245faebad9991e..c8a57724254547b50a81f15590e72c52de381aff 100644 (file)
 <p>Kill tasks delete all information about a segment and removes it from deep storage. Killable segments must be disabled (used==0) in the Druid segment table. The available grammar is:</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;kill&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_id&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_da</span><span class="kc">tas</span><span class="err">ource&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;interval&quot;</span> <span class="p">:</span> <span class="err">&lt;all_segme</span><span class="kc">nts</span><span class="err">_i</span><span class="kc">n</span><span class="err">_</span><span class="kc">t</span><span class="err">his_i</span><span class="kc">nter</span><span class="err">val_will_die!&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k</span> <span class="err">co</span><span class="kc">nte</span><span class="err">x</span><span class="kc">t</span><span class="err">&gt;</span>
+    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;task_id&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;task_datasource&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;interval&quot;</span> <span class="p">:</span> <span class="err">&lt;all_segments_in_this_interval_will_die!&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;task</span> <span class="err">context&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
         </div>
index e3bd4cf1c700aba707e2bbcb2f4a5ff2679456b3..49b201f0794cf1706476afce6d2b2923592d34b9 100644 (file)
@@ -391,7 +391,7 @@ An example is shown below:</p>
 This can be used to merge data from more than one firehose.</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span>  <span class="p">:</span>   <span class="s2">&quot;combining&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;delegates&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="p">{</span> <span class="kc">f</span><span class="err">irehose</span><span class="mi">1</span> <span class="p">},</span> <span class="p">{</span> <span class="kc">f</span><span class="err">irehose</span><span class="mi">2</span> <span class="p">},</span> <span class="err">.....</span> <span class="p">]</span>
+    <span class="nt">&quot;delegates&quot;</span> <span class="p">:</span> <span class="p">[</span> <span class="p">{</span> <span class="err">firehose1</span> <span class="p">},</span> <span class="p">{</span> <span class="err">firehose2</span> <span class="p">},</span> <span class="err">.....</span> <span class="p">]</span>
 <span class="p">}</span>
 </code></pre></div>
 <table><thead>
index 675fcf559b118eafce006499ff364931b0f23a5c..433a2a3550ff98524b2eaa184a7205f84b6f8f5f 100644 (file)
 <p>The column &quot;metrica&quot; is a Long metric column, &quot;hello&quot; is an array of Double metrics, and &quot;nestmet.val&quot; is a nested Long metric. All other columns are dimensions.</p>
 
 <p>To flatten this JSON, the parseSpec could be defined as follows:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;parseSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;parseSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;format&quot;</span><span class="p">:</span> <span class="s2">&quot;json&quot;</span><span class="p">,</span>
   <span class="nt">&quot;flattenSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;useFieldDiscovery&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
 <p>&quot;ignore_me&quot; will be automatically discovered but excluded as specified by dimensionsExclusions.</p>
 
 <p>Aggregators should use the metric column names as defined in the flattenSpec. Using the example above:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;metricsSpec&quot;</span> <span class="p">:</span> <span class="p">[</span> 
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;metricsSpec&quot;</span> <span class="err">:</span> <span class="p">[</span> 
 <span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;longSum&quot;</span><span class="p">,</span>
   <span class="nt">&quot;name&quot;</span> <span class="p">:</span> <span class="s2">&quot;path-metric-sum&quot;</span><span class="p">,</span>
index 9a804d1d3b508915e02364b5d0235a3a70b883b8..b0363a9bd70076c306794af4ab36a69f404b07b4 100644 (file)
@@ -220,7 +220,7 @@ See <a href="../ingestion/command-line-hadoop-indexer.html">here</a> for more in
       <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;hadoop&quot;</span>
     <span class="p">}</span>
   <span class="p">},</span>
-  <span class="nt">&quot;hadoopDependencyCoordinates&quot;</span><span class="p">:</span> <span class="err">&lt;my_hadoop_versio</span><span class="kc">n</span><span class="err">&gt;</span>
+  <span class="nt">&quot;hadoopDependencyCoordinates&quot;</span><span class="p">:</span> <span class="err">&lt;my_hadoop_version&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <table><thead>
@@ -510,7 +510,7 @@ s3n://billy-bucket/the/data/is/here/y=2012/m=06/d=01/H=23
 </tbody></table>
 
 <h3 id="jobproperties-field-of-tuningconfig">jobProperties field of TuningConfig</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>   <span class="nt">&quot;tuningConfig&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>   <span class="s2">&quot;tuningConfig&quot;</span> <span class="err">:</span> <span class="p">{</span>
      <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;hadoop&quot;</span><span class="p">,</span>
      <span class="nt">&quot;jobProperties&quot;</span><span class="p">:</span> <span class="p">{</span>
        <span class="nt">&quot;&lt;hadoop-property-a&gt;&quot;</span><span class="p">:</span> <span class="s2">&quot;&lt;value-a&gt;&quot;</span><span class="p">,</span>
@@ -614,7 +614,7 @@ hash of all dimensions in each row), and &quot;dimension&quot; (based on ranges
 sized data segments relative to single-dimension partitioning.</p>
 
 <h3 id="hash-based-partitioning">Hash-based partitioning</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;partitionsSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;partitionsSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
      <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;hashed&quot;</span><span class="p">,</span>
      <span class="nt">&quot;targetPartitionSize&quot;</span><span class="p">:</span> <span class="mi">5000000</span>
    <span class="p">}</span>
@@ -655,7 +655,7 @@ cardinality of the input set and a target partition size.</p>
 </tbody></table>
 
 <h3 id="single-dimension-partitioning">Single-dimension partitioning</h3>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="nt">&quot;partitionsSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>  <span class="s2">&quot;partitionsSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
      <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;dimension&quot;</span><span class="p">,</span>
      <span class="nt">&quot;targetPartitionSize&quot;</span><span class="p">:</span> <span class="mi">5000000</span>
    <span class="p">}</span>
index 59ce459e759fb4b34955a7130506c1a25d626c72..87603753e56ca37495ee3617dacdf85142888560 100644 (file)
 <h1 id="dataschema">DataSchema</h1>
 
 <p>An example dataSchema is shown below:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;dataSchema&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;dataSchema&quot;</span> <span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;dataSource&quot;</span> <span class="p">:</span> <span class="s2">&quot;wikipedia&quot;</span><span class="p">,</span>
   <span class="nt">&quot;parser&quot;</span> <span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;string&quot;</span><span class="p">,</span>
@@ -600,7 +600,7 @@ bitmap indexes; they are not supported for numeric columns.</p>
 <p>For example, the following <code>dimensionsSpec</code> section from a <code>dataSchema</code> ingests one column as Long (<code>countryNum</code>), two
 columns as Float (<code>userLatitude</code>, <code>userLongitude</code>), and the other columns as Strings, with bitmap indexes disabled
 for the <code>comment</code> column.</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;dimensionsSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;dimensionsSpec&quot;</span> <span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;dimensions&quot;</span><span class="p">:</span> <span class="p">[</span>
     <span class="s2">&quot;page&quot;</span><span class="p">,</span>
     <span class="s2">&quot;language&quot;</span><span class="p">,</span>
index 0dc118383ad1f7c5655ce78c8c9e1c3933c5552f..156bfeaa0ac058c92aaa44e5c6fe31002bc1e9c8 100644 (file)
@@ -202,7 +202,7 @@ Tasks are also part of a &quot;task group&quot;, which is a set of tasks that ca
 </tbody></table>
 
 <p>You can override the task priority by setting your priority in the task context like below.</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;context&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;context&quot;</span> <span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;priority&quot;</span> <span class="p">:</span> <span class="mi">100</span>
 <span class="p">}</span>
 </code></pre></div>
index 8d935492863f1be6777d3ad956f613fb5e8d0c02..73cf6ab621bd8672deb4a2d5bbae1d1a908904b5 100644 (file)
 <p>These tasks start, sleep for a time and are used only for testing. The available grammar is:</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;noop&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span><span class="err">_</span><span class="kc">tas</span><span class="err">k_id&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;interval&quot;</span> <span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span><span class="err">_segme</span><span class="kc">nt</span><span class="err">_i</span><span class="kc">nter</span><span class="err">val&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;runTime&quot;</span> <span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span><span class="err">_millis_</span><span class="kc">t</span><span class="err">o_sleep&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;firehose&quot;</span><span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span><span class="err">_</span><span class="kc">f</span><span class="err">irehose_</span><span class="kc">t</span><span class="err">o_</span><span class="kc">test</span><span class="err">_co</span><span class="kc">nne</span><span class="err">c</span><span class="kc">t</span><span class="err">&gt;</span>
+    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;optional_task_id&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;interval&quot;</span> <span class="p">:</span> <span class="err">&lt;optional_segment_interval&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;runTime&quot;</span> <span class="p">:</span> <span class="err">&lt;optional_millis_to_sleep&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;firehose&quot;</span><span class="p">:</span> <span class="err">&lt;optional_firehose_to_test_connect&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h2 id="segment-merging-tasks-deprecated">Segment Merging Tasks (Deprecated)</h2>
 <p>Append tasks append a list of segments together into a single segment (one after the other). The grammar is:</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;append&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_id&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_da</span><span class="kc">tas</span><span class="err">ource&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;segments&quot;</span><span class="p">:</span> <span class="err">&lt;JSON</span> <span class="err">lis</span><span class="kc">t</span> <span class="err">o</span><span class="kc">f</span> <span class="err">Da</span><span class="kc">ta</span><span class="err">Segme</span><span class="kc">nt</span> <span class="err">objec</span><span class="kc">ts</span> <span class="kc">t</span><span class="err">o</span> <span class="err">appe</span><span class="kc">n</span><span class="err">d&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="err">&lt;op</span><span class="kc">t</span><span class="err">io</span><span class="kc">nal</span> <span class="err">lis</span><span class="kc">t</span> <span class="err">o</span><span class="kc">f</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k</span> <span class="err">co</span><span class="kc">nte</span><span class="err">x</span><span class="kc">t</span><span class="err">&gt;</span>
+    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;task_id&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;task_datasource&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;segments&quot;</span><span class="p">:</span> <span class="err">&lt;JSON</span> <span class="err">list</span> <span class="err">of</span> <span class="err">DataSegment</span> <span class="err">objects</span> <span class="err">to</span> <span class="err">append&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="err">&lt;optional</span> <span class="err">list</span> <span class="err">of</span> <span class="err">aggregators&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;task</span> <span class="err">context&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h3 id="merge-task">Merge Task</h3>
@@ -183,12 +183,12 @@ If rollup is disabled as part of ingestion, common timestamps are not merged and
 <p>The grammar is:</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;merge&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_id&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_da</span><span class="kc">tas</span><span class="err">ource&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="err">&lt;lis</span><span class="kc">t</span> <span class="err">o</span><span class="kc">f</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;rollup&quot;</span><span class="p">:</span> <span class="err">&lt;whe</span><span class="kc">t</span><span class="err">her</span> <span class="err">or</span> <span class="kc">n</span><span class="err">o</span><span class="kc">t</span> <span class="kc">t</span><span class="err">o</span> <span class="err">rollup</span> <span class="err">da</span><span class="kc">ta</span> <span class="err">duri</span><span class="kc">n</span><span class="err">g</span> <span class="err">a</span> <span class="err">merge&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;segments&quot;</span><span class="p">:</span> <span class="err">&lt;JSON</span> <span class="err">lis</span><span class="kc">t</span> <span class="err">o</span><span class="kc">f</span> <span class="err">Da</span><span class="kc">ta</span><span class="err">Segme</span><span class="kc">nt</span> <span class="err">objec</span><span class="kc">ts</span> <span class="kc">t</span><span class="err">o</span> <span class="err">merge&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k</span> <span class="err">co</span><span class="kc">nte</span><span class="err">x</span><span class="kc">t</span><span class="err">&gt;</span>
+    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;task_id&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;task_datasource&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="err">&lt;list</span> <span class="err">of</span> <span class="err">aggregators&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;rollup&quot;</span><span class="p">:</span> <span class="err">&lt;whether</span> <span class="err">or</span> <span class="err">not</span> <span class="err">to</span> <span class="err">rollup</span> <span class="err">data</span> <span class="err">during</span> <span class="err">a</span> <span class="err">merge&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;segments&quot;</span><span class="p">:</span> <span class="err">&lt;JSON</span> <span class="err">list</span> <span class="err">of</span> <span class="err">DataSegment</span> <span class="err">objects</span> <span class="err">to</span> <span class="err">merge&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;task</span> <span class="err">context&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
 <h3 id="same-interval-merge-task">Same Interval Merge Task</h3>
@@ -198,12 +198,12 @@ If rollup is disabled as part of ingestion, common timestamps are not merged and
 <p>The grammar is:</p>
 <div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="p">{</span>
     <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;same_interval_merge&quot;</span><span class="p">,</span>
-    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_id&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k_da</span><span class="kc">tas</span><span class="err">ource&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="err">&lt;lis</span><span class="kc">t</span> <span class="err">o</span><span class="kc">f</span> <span class="err">aggrega</span><span class="kc">t</span><span class="err">ors&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;rollup&quot;</span><span class="p">:</span> <span class="err">&lt;whe</span><span class="kc">t</span><span class="err">her</span> <span class="err">or</span> <span class="kc">n</span><span class="err">o</span><span class="kc">t</span> <span class="kc">t</span><span class="err">o</span> <span class="err">rollup</span> <span class="err">da</span><span class="kc">ta</span> <span class="err">duri</span><span class="kc">n</span><span class="err">g</span> <span class="err">a</span> <span class="err">merge&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;interval&quot;</span><span class="p">:</span> <span class="err">&lt;Da</span><span class="kc">ta</span><span class="err">Segme</span><span class="kc">nt</span> <span class="err">objec</span><span class="kc">ts</span> <span class="err">i</span><span class="kc">n</span> <span class="kc">t</span><span class="err">his</span> <span class="err">i</span><span class="kc">nter</span><span class="err">val</span> <span class="err">are</span> <span class="err">goi</span><span class="kc">n</span><span class="err">g</span> <span class="kc">t</span><span class="err">o</span> <span class="err">be</span> <span class="err">merged&gt;</span><span class="p">,</span>
-    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;</span><span class="kc">tas</span><span class="err">k</span> <span class="err">co</span><span class="kc">nte</span><span class="err">x</span><span class="kc">t</span><span class="err">&gt;</span>
+    <span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="err">&lt;task_id&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;dataSource&quot;</span><span class="p">:</span> <span class="err">&lt;task_datasource&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;aggregations&quot;</span><span class="p">:</span> <span class="err">&lt;list</span> <span class="err">of</span> <span class="err">aggregators&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;rollup&quot;</span><span class="p">:</span> <span class="err">&lt;whether</span> <span class="err">or</span> <span class="err">not</span> <span class="err">to</span> <span class="err">rollup</span> <span class="err">data</span> <span class="err">during</span> <span class="err">a</span> <span class="err">merge&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;interval&quot;</span><span class="p">:</span> <span class="err">&lt;DataSegment</span> <span class="err">objects</span> <span class="err">in</span> <span class="err">this</span> <span class="err">interval</span> <span class="err">are</span> <span class="err">going</span> <span class="err">to</span> <span class="err">be</span> <span class="err">merged&gt;</span><span class="p">,</span>
+    <span class="nt">&quot;context&quot;</span><span class="p">:</span> <span class="err">&lt;task</span> <span class="err">context&gt;</span>
 <span class="p">}</span>
 </code></pre></div>
         </div>
index 34418f9a63ab0a23151079b368c2df05075dc828..1da072664cbbf6661b398b46265ad0d3abadb08e 100644 (file)
@@ -529,7 +529,7 @@ they can be used in place for Tranquility server and the indexing service. Pleas
 <p>Segments are identified by datasource, time interval, and version. With sharding, a segment is also identified by a partition number. Typically, each shard will have the same version but a different partition number to uniquely identify it.</p>
 
 <p>In small-data scenarios, sharding is unnecessary and can be set to none (the default):</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;shardSpec&quot;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;none&quot;</span><span class="p">}</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;shardSpec&quot;</span><span class="err">:</span> <span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;none&quot;</span><span class="p">}</span>
 </code></pre></div>
 <p>However, in scenarios with multiple realtime nodes, <code>none</code> is less useful as it cannot help with scaling data volume (see below). Note that for the batch indexing service, no explicit configuration is required; sharding is provided automatically.</p>
 
@@ -547,7 +547,7 @@ they can be used in place for Tranquility server and the indexing service. Pleas
 </ul>
 
 <p>Configure <code>linear</code> under <code>schema</code>:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;shardSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;shardSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
         <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span>
         <span class="nt">&quot;partitionNum&quot;</span><span class="p">:</span> <span class="mi">0</span>
     <span class="p">}</span>
@@ -557,7 +557,7 @@ they can be used in place for Tranquility server and the indexing service. Pleas
 <p>This strategy is similar to <code>linear</code> except that it does not tolerate non-sequential partition numbering (it will <em>not</em> allow querying of partitions 0 and 2 if partition 1 is missing). It also requires explicitly setting the total number of partitions.</p>
 
 <p>Configure <code>numbered</code> under <code>schema</code>:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;shardSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;shardSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
         <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;numbered&quot;</span><span class="p">,</span>
         <span class="nt">&quot;partitionNum&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
         <span class="nt">&quot;partitions&quot;</span><span class="p">:</span> <span class="mi">2</span>
@@ -568,13 +568,13 @@ they can be used in place for Tranquility server and the indexing service. Pleas
 <p>The <code>shardSpec</code> configuration can be used to create redundancy by having the same <code>partitionNum</code> values on different nodes.</p>
 
 <p>For example, if RealTimeNode1 has:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;shardSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;shardSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
         <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span>
         <span class="nt">&quot;partitionNum&quot;</span><span class="p">:</span> <span class="mi">0</span>
     <span class="p">}</span>
 </code></pre></div>
 <p>and RealTimeNode2 has:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;shardSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;shardSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
         <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span>
         <span class="nt">&quot;partitionNum&quot;</span><span class="p">:</span> <span class="mi">0</span>
     <span class="p">}</span>
@@ -582,7 +582,7 @@ they can be used in place for Tranquility server and the indexing service. Pleas
 <p>then two realtime nodes can store segments with the same datasource, version, time interval, and partition number. Brokers that query for data in such segments will assume that they hold the same data, and the query will target only one of the segments.</p>
 
 <p><code>shardSpec</code> can also help achieve scale. For this, add nodes with a different <code>partionNum</code>. Continuing with the example, if RealTimeNode3 has:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="nt">&quot;shardSpec&quot;</span><span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span>    <span class="s2">&quot;shardSpec&quot;</span><span class="err">:</span> <span class="p">{</span>
         <span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span>
         <span class="nt">&quot;partitionNum&quot;</span><span class="p">:</span> <span class="mi">1</span>
     <span class="p">}</span>
index 51cde28873c636ea39a6838de337321039be647c..364f8fad407b80fa482085abc878a94495c04a5a 100644 (file)
@@ -275,7 +275,7 @@ For simple Hadoop batch ingestion, <code>static</code> or <code>granularity</cod
 </tbody></table>
 
 <p>For example</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;ioConfig&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;ioConfig&quot;</span> <span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;hadoop&quot;</span><span class="p">,</span>
   <span class="nt">&quot;inputSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;dataSource&quot;</span><span class="p">,</span>
@@ -309,7 +309,7 @@ Note that, &quot;useNewAggs&quot; must be set to default value false to support
 </tbody></table>
 
 <p>For example:</p>
-<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="nt">&quot;ioConfig&quot;</span> <span class="p">:</span> <span class="p">{</span>
+<div class="highlight"><pre><code class="language-json" data-lang="json"><span></span><span class="s2">&quot;ioConfig&quot;</span> <span class="err">:</span> <span class="p">{</span>
   <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;hadoop&quot;</span><span class="p">,</span>
   <span class="nt">&quot;inputSpec&quot;</span> <span class="p">:</span> <span class="p">{</span>
     <span class="nt">&quot;type&quot;</span> <span class="p">:</span> <span class="s2">&quot;multi&quot;</span><span class="p">,</span>
index c5d7d2f08f8d95a35266081ab0f50e807e1913cf..f30dea1f8c02cce57ae4f89ba07c578e32f37220 100644 (file)
   -->
 
 <h1 id="content-for-build-sbt">Content for build.sbt</h1>
-<div class="highlight"><pre><code class="language-scala" data-lang="scala"><span></span><span class="n">libraryDependencies</span> <span class="o">++=</span> <span class="nc">Seq</span><span class="p">(</span>
-  <span class="s">&quot;com.amazonaws&quot;</span> <span class="o">%</span> <span class="s">&quot;aws-java-sdk&quot;</span> <span class="o">%</span> <span class="s">&quot;1.9.23&quot;</span> <span class="n">exclude</span><span class="p">(</span><span class="s">&quot;common-logging&quot;</span><span class="p">,</span> <span class="s">&quot;common-logging&quot;</span><span class="p">),</span>
-  <span class="s">&quot;org.joda&quot;</span> <span class="o">%</span> <span class="s">&quot;joda-convert&quot;</span> <span class="o">%</span> <span class="s">&quot;1.7&quot;</span><span class="p">,</span>
-  <span class="s">&quot;joda-time&quot;</span> <span class="o">%</span> <span class="s">&quot;joda-time&quot;</span> <span class="o">%</span> <span class="s">&quot;2.7&quot;</span><span class="p">,</span>
-  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-services&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-indexing-service&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-indexing-hadoop&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;mysql-metadata-storage&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-s3-extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-histogram&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-hdfs-storage&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="p">(</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="p">),</span>
-    <span class="nc">ExclusionRule</span><span class="p">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="p">)</span>
-  <span class="p">),</span>
-  <span class="s">&quot;com.fasterxml.jackson.core&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-annotations&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.core&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-core&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.core&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-databind&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-datatype-guava&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-datatype-joda&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-jaxrs-base&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-jaxrs-json-provider&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-jaxrs-smile-provider&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.fasterxml.jackson.module&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-module-jaxb-annotations&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="p">,</span>
-  <span class="s">&quot;com.sun.jersey&quot;</span> <span class="o">%</span> <span class="s">&quot;jersey-servlet&quot;</span> <span class="o">%</span> <span class="s">&quot;1.17.1&quot;</span><span class="p">,</span>
-  <span class="s">&quot;mysql&quot;</span> <span class="o">%</span> <span class="s">&quot;mysql-connector-java&quot;</span> <span class="o">%</span> <span class="s">&quot;5.1.34&quot;</span><span class="p">,</span>
-  <span class="s">&quot;org.scalatest&quot;</span> <span class="o">%%</span> <span class="s">&quot;scalatest&quot;</span> <span class="o">%</span> <span class="s">&quot;2.2.3&quot;</span> <span class="o">%</span> <span class="s">&quot;test&quot;</span><span class="p">,</span>
+<div class="highlight"><pre><code class="language-scala" data-lang="scala"><span></span><span class="n">libraryDependencies</span> <span class="o">++=</span> <span class="nc">Seq</span><span class="o">(</span>
+  <span class="s">&quot;com.amazonaws&quot;</span> <span class="o">%</span> <span class="s">&quot;aws-java-sdk&quot;</span> <span class="o">%</span> <span class="s">&quot;1.9.23&quot;</span> <span class="n">exclude</span><span class="o">(</span><span class="s">&quot;common-logging&quot;</span><span class="o">,</span> <span class="s">&quot;common-logging&quot;</span><span class="o">),</span>
+  <span class="s">&quot;org.joda&quot;</span> <span class="o">%</span> <span class="s">&quot;joda-convert&quot;</span> <span class="o">%</span> <span class="s">&quot;1.7&quot;</span><span class="o">,</span>
+  <span class="s">&quot;joda-time&quot;</span> <span class="o">%</span> <span class="s">&quot;joda-time&quot;</span> <span class="o">%</span> <span class="s">&quot;2.7&quot;</span><span class="o">,</span>
+  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-services&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-indexing-service&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-indexing-hadoop&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;mysql-metadata-storage&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-s3-extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-histogram&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;org.apache.druid.extensions&quot;</span> <span class="o">%</span> <span class="s">&quot;druid-hdfs-storage&quot;</span> <span class="o">%</span> <span class="s">&quot;0.8.1&quot;</span> <span class="n">excludeAll</span> <span class="o">(</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;org.ow2.asm&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.core&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.dataformat&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span><span class="o">),</span>
+    <span class="nc">ExclusionRule</span><span class="o">(</span><span class="s">&quot;com.fasterxml.jackson.module&quot;</span><span class="o">)</span>
+  <span class="o">),</span>
+  <span class="s">&quot;com.fasterxml.jackson.core&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-annotations&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.core&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-core&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.core&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-databind&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-datatype-guava&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.datatype&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-datatype-joda&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-jaxrs-base&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-jaxrs-json-provider&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.jaxrs&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-jaxrs-smile-provider&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.fasterxml.jackson.module&quot;</span> <span class="o">%</span> <span class="s">&quot;jackson-module-jaxb-annotations&quot;</span> <span class="o">%</span> <span class="s">&quot;2.3.0&quot;</span><span class="o">,</span>
+  <span class="s">&quot;com.sun.jersey&quot;</span> <span class="o">%</span> <span class="s">&quot;jersey-servlet&quot;</span> <span class="o">%</span> <span class="s">&quot;1.17.1&quot;</span><span class="o">,</span>
+  <span class="s">&quot;mysql&quot;</span> <span class="o">%</span> <span class="s">&quot;mysql-connector-java&quot;</span> <span class="o">%</span> <span class="s">&quot;5.1.34&quot;</span><span class="o">,</span>
+  <span class="s">&quot;org.scalatest&quot;</span> <span class="o">%%</span> <span class="s">&quot;scalatest&quot;</span> <span class="o">%</span> <span class="s">&quot;2.2.3&quot;</span> <span class="o">%</span> <span class="s">&quot;test&quot;</span><span class="o">,</span>
   <span class="s">&quot;org.mockito&quot;</span> <span class="o">%</span> <span class="s">&quot;mockito-core&quot;</span> <span class="o">%</span> <span class="s">&quot;1.10.19&quot;</span> <span class="o">%</span> <span class="s">&quot;test&quot;</span>
-<span class="p">)</span>
+<span class="o">)</span>
 
-<span class="n">assemblyMergeStrategy</span> <span class="n">in</span> <span class="n">assembly</span> <span class="o">:=</span> <span class="p">{</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;pom.&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;javax.inject.Named&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;mime.types&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/impl/SimpleLog.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/impl/SimpleLog$1.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/impl/NoOpLog.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/LogFactory.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/LogConfigurationException.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/Log.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;META-INF/jersey-module-version&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;.properties&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;.class&quot;</span> <span class="o">=&gt;</span> <span class="nc">MergeStrategy</span><span class="p">.</span><span class="n">first</span>
-  <span class="k">case</span> <span class="n">x</span> <span class="o">=&gt;</span>
-    <span class="kd">val</span> <span class="n">oldStrategy</span> <span class="o">=</span> <span class="p">(</span><span class="n">assemblyMergeStrategy</span> <span class="n">in</span> <span class="n">assembly</span><span class="p">).</span><span class="n">value</span>
-    <span class="n">oldStrategy</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
-<span class="p">}</span>
+<span class="n">assemblyMergeStrategy</span> <span class="n">in</span> <span class="n">assembly</span> <span class="o">:=</span> <span class="o">{</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;pom.&quot;</span> <span class="k">=&gt;</span> <span class="nc">MergeStrategy</span><span class="o">.</span><span class="n">first</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;javax.inject.Named&quot;</span> <span class="k">=&gt;</span> <span class="nc">MergeStrategy</span><span class="o">.</span><span class="n">first</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;mime.types&quot;</span> <span class="k">=&gt;</span> <span class="nc">MergeStrategy</span><span class="o">.</span><span class="n">first</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/impl/SimpleLog.class&quot;</span> <span class="k">=&gt;</span> <span class="nc">MergeStrategy</span><span class="o">.</span><span class="n">first</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/impl/SimpleLog$1.class&quot;</span> <span class="k">=&gt;</span> <span class="nc">MergeStrategy</span><span class="o">.</span><span class="n">first</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/impl/NoOpLog.class&quot;</span> <span class="k">=&gt;</span> <span class="nc">MergeStrategy</span><span class="o">.</span><span class="n">first</span>
+  <span class="k">case</span> <span class="n">path</span> <span class="k">if</span> <span class="n">path</span> <span class="n">contains</span> <span class="s">&quot;org/apache/commons/logging/LogFactory.class&quot;</span> <span class="k">=&gt