<!DOCTYPE html>
<!-- Start _layouts/doc_page.html-->
<html lang="en">

<head>
<!-- Start _include/site_head.html -->
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="datasketches">

<title>DataSketches | </title>

<link rel="shortcut icon" href="/img/favicon.png">

<!-- original source: https://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css -->
<link rel="stylesheet" href="/css/font-awesome.min.css">
<!-- original source: https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css -->
<link rel="stylesheet" href="/css/bootstrap.min.css">

<link rel="stylesheet" href="/css/fonts.css" type="text/css">

<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/css/header.css">
<link rel="stylesheet" href="/css/footer.css">
<link rel="stylesheet" href="/css/syntax.css">
<link rel="stylesheet" href="/css/docs.css">

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},showMathMenu:false,showMathMenuMSIE:false,showProcessingMessages:false});
</script>

<!-- original source: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMX_HTML-full -->
<script type="text/javascript" src="/js/MathJax.js?config=TeX-AMS_HTML"></script>

<!-- original source: https://code.jquery.com/jquery.min.js -->
<script src="/js/jquery.min.js"></script>

<!-- original source: https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js -->
<script src="/js/bootstrap.min.js"></script> <!-- 3.2.0-->
<!-- End _include/site_head.html -->

</head>

<body>
<!-- Start _include/nav_bar.html -->
<div class="navbar navbar-inverse navbar-static-top ds-nav">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="/" style="padding-top: 0px; padding-bottom: 0px;">
        <span class="ds-small-h-logo"></span></a>
    </div>
    <div class="navbar-collapse collapse">
      <ul class="nav navbar-nav navbar-right">
        <li>
          <a href="/docs/Background/TheChallenge.html">
            <span class="fa fa-info-circle"></span> DOCUMENTATION</a>
        </li>
        <li>
          <a href="/docs/Community/Downloads.html">
            <span class="fa fa-download"></span> DOWNLOAD</a>
        </li>
        <!--
        <li>
          <a href="/docs/Architecture/Components.html">
            <span class="fa fa-github"></span> GITHUB</a>
        </li>
        -->
        <li>
          <a href="/docs/Community/Research.html">
            <span class="fa fa-paper-plane"></span> RESEARCH</a>
        </li>
        <li>
          <a href="/docs/Community/index.html" style="padding-top: 0; padding-bottom: 0;">
            <img class="ds-small-man" src="/img/datasketches-ManWhite.svg"/>COMMUNITY</a>
        </li>
        <li>
          <ul class="nav navbar-nav navbar-right ds-nav">
            <li class="dropdown ds-nav" >
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" style="padding-top: 0; padding-bottom: 0;"><img class="apache-logo" src="/img/feather.svg"/>Apache <span class="caret"></span></a>
              <ul class="dropdown-menu ds-nav">
                <li><a href="https://www.apache.org/" target="_blank">Foundation</a></li>
                <li><a href="https://www.apache.org/events/current-event" target="_blank">Events</a></li>
                <li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li>
                <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy Policy</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
                <li><a href="https://www.apache.org/security/" target="_blank">Security</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </div>
  </div>
</div>
<!-- End _include/nav_bar.html -->


<!-- Start _include/javadocs.html -->
<div class="ds-header">
  <div class="container">
    <h4>API Snapshots:
      <a href="https://apache.github.io/datasketches-java/4.2.0/">Java Core</a>,
      <a href="https://apache.github.io/datasketches-cpp/5.0.0/">C++ Core</a>,
      <a href="https://apache.github.io/datasketches-python/main/">Python</a>,
      <a href="https://apache.github.io/datasketches-memory/master/">Memory</a>,
      <a href="/api/pig/snapshot/apidocs/index.html">Pig</a>,
      <a href="/api/hive/snapshot/apidocs/index.html">Hive</a>,
    </h4>
  </div>
</div>
<!-- End _include/javadocs.html -->


  <div class="container">
    <div class="row">
      <!-- Start ToC Block -->
      <div class="col-md-3">
        <div class="searchbox" style="position:relative">
          <gcse:searchbox-only></gcse:searchbox-only>
        </div>
<!-- Start _includes/toc.html -->
<!-- Computer Generated File, Do Not Edit! -->
<link rel="stylesheet" href="/css/toc.css">
<div id="toc" class="nav toc hidden-print">

  <p id="background">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_background">Background</a>
  </p>
  <div class="collapse" id="collapse_background">
    <li><a href="/docs/Background/TheChallenge.html">•The Challenge</a></li>
    <li><a href="/docs/Background/SketchOrigins.html">•Sketch Origins</a></li>
    <li><a href="/docs/Background/SketchElements.html">•Sketch Elements</a></li>
    <li><a href="/docs/Background/Presentations.html">•Presentations</a></li>
    <li><a href="https://github.com/apache/datasketches-website/tree/master/docs/pdf/DataSketches_deck.pdf">•Overview Slide Deck</a></li>
  </div>

  <p id="architecture-and-design">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_architecture_and_design">Architecture And Design</a>
  </p>
  <div class="collapse" id="collapse_architecture_and_design">
    <li><a href="/docs/Architecture/MajorSketchFamilies.html">•The Major Sketch Families</a></li>
    <li><a href="/docs/Architecture/LargeScale.html">•Large Scale Computing</a></li>
    <li><a href="/docs/Architecture/KeyFeatures.html">•Key Features</a></li>
    <li><a href="/docs/Architecture/SketchFeaturesMatrix.html">•Sketch Features Matrix</a></li>
    <li><a href="/docs/Architecture/Components.html">•Components</a></li>
    <li><a href="/docs/Architecture/SketchesByComponent.html">•Sketches by Component</a></li>
    <li><a href="/docs/Architecture/SketchCriteria.html">•Sketch Criteria</a></li>

    <p id="memory-component">
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_memory_component">Memory Component</a>
    </p>
    <div class="collapse" id="collapse_memory_component">
      <li><a href="/docs/Memory/MemoryComponent.html">•Memory Component</a></li>
      <li><a href="/docs/Memory/MemoryPerformance.html">•Memory Component Performance</a></li>
    </div>
    <li><a href="/docs/Architecture/OrderSensitivity.html">•Notes on Order Sensitivity</a></li>
    <li><a href="/docs/Architecture/Concurrency.html">•Notes on Concurrency</a></li>
  </div>

  <p id="sketch-families">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_sketch_families">Sketch Families</a>
  </p>
  <div class="collapse" id="collapse_sketch_families">

    <p id="distinct-counting">
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_distinct_counting">Distinct Counting</a>
    </p>
    <div class="collapse" id="collapse_distinct_counting">
      <li><a href="/docs/DistinctCountFeaturesMatrix.html">•Features Matrix</a></li>
      <li><a href="/docs/DistinctCountMeritComparisons.html">•Figures-of-Merit Comparison</a></li>

      <p id="cpc-sketches">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_cpc_sketches">CPC Sketches</a>
      </p>
      <div class="collapse" id="collapse_cpc_sketches">
        <li><a href="/docs/CPC/CPC.html">•CPC Sketch</a></li>
        <li><a href="/docs/CPC/CpcPerformance.html">•CPC Sketch Performance</a></li>

        <p id="cpc-examples">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_cpc_examples">CPC Examples</a>
        </p>
        <div class="collapse" id="collapse_cpc_examples">
          <li><a href="/docs/CPC/CpcJavaExample.html">•CPC Sketch Java Example</a></li>
          <li><a href="/docs/CPC/CpcCppExample.html">•CPC Sketch C++ Example</a></li>
          <li><a href="/docs/CPC/CpcPigExample.html">•CPC Sketch Pig UDFs</a></li>
          <li><a href="/docs/CPC/CpcHiveExample.html">•CPC Sketch Hive UDFs</a></li>
        </div>
      </div>

      <p id="hyperloglog-sketches">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_hyperloglog_sketches">HyperLogLog Sketches</a>
      </p>
      <div class="collapse" id="collapse_hyperloglog_sketches">
        <li><a href="/docs/HLL/HLL.html">•HLL Sketch</a></li>
        <li><a href="/docs/HLL/HllMap.html">•HLL Map Sketch</a></li>

        <p id="hll-examples">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_hll_examples">HLL Examples</a>
        </p>
        <div class="collapse" id="collapse_hll_examples">
          <li><a href="/docs/HLL/HllJavaExample.html">•HLL Sketch Java Example</a></li>
          <li><a href="/docs/HLL/HllCppExample.html">•HLL Sketch C++ Example</a></li>
          <li><a href="/docs/HLL/HllPigUDFs.html">•HLL Sketch Pig UDFs</a></li>
          <li><a href="/docs/HLL/HllHiveUDFs.html">•HLL Sketch Hive UDFs</a></li>
        </div>

        <p id="hll-studies">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_hll_studies">HLL Studies</a>
        </p>
        <div class="collapse" id="collapse_hll_studies">
          <li><a href="/docs/HLL/HllPerformance.html">•HLL Sketch Performance</a></li>
          <li><a href="/docs/HLL/Hll_vs_CS_Hllpp.html">•HLL vs Clearspring HLL++</a></li>
          <li><a href="/docs/HLL/HllSketchVsDruidHyperLogLogCollector.html">•HLL Sketch vs Druid HyperLogLogCollector</a></li>
        </div>
      </div>

      <p id="theta-sketches">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_theta_sketches">Theta Sketches</a>
      </p>
      <div class="collapse" id="collapse_theta_sketches">
        <li><a href="/docs/Theta/ThetaSketchFramework.html">•Theta Sketch Framework</a></li>

        <p id="theta-examples">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_theta_examples">Theta Examples</a>
        </p>
        <div class="collapse" id="collapse_theta_examples">
          <li><a href="/docs/Theta/ConcurrentThetaSketch.html">•Concurrent Theta Sketch</a></li>
          <li><a href="/docs/Theta/ThetaJavaExample.html">•Theta Sketch Java Example</a></li>
          <li><a href="/docs/Theta/ThetaSparkExample.html">•Theta Sketch Spark Example</a></li>
          <li><a href="/docs/Theta/ThetaPigUDFs.html">•Theta Sketch Pig UDFs</a></li>
          <li><a href="/docs/Theta/ThetaHiveUDFs.html">•Theta Sketch Hive UDFs</a></li>
        </div>

        <p id="kmv-tutorial">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_kmv_tutorial">KMV Tutorial</a>
        </p>
        <div class="collapse" id="collapse_kmv_tutorial">
          <li><a href="/docs/Theta/InverseEstimate.html">•The Inverse Estimate</a></li>
          <li><a href="/docs/Theta/KMVempty.html">•Empty Sketch</a></li>
          <li><a href="/docs/Theta/KMVfirstEst.html">•First Estimator</a></li>
          <li><a href="/docs/Theta/KMVbetterEst.html">•Better Estimator</a></li>
          <li><a href="/docs/Theta/KMVrejection.html">•Rejection Rules</a></li>
          <li><a href="/docs/Theta/KMVupdateVkth.html">•Update V(kth) Rule</a></li>
        </div>

        <p id="set-operations-and-p-sampling">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_set_operations_and_p-sampling">Set Operations and P-sampling</a>
        </p>
        <div class="collapse" id="collapse_set_operations_and_p-sampling">
          <li><a href="/docs/Theta/ThetaSketchSetOps.html">•Set Operations</a></li>
          <li><a href="/docs/Theta/ThetaSetOpsCornerCases.html">•Model & Test Set Operations</a></li>
          <li><a href="/docs/Theta/ThetaPSampling.html">•<i>p</i>-Sampling</a></li>
        </div>

        <p id="accuracy">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_accuracy">Accuracy</a>
        </p>
        <div class="collapse" id="collapse_accuracy">
          <li><a href="/docs/Theta/ThetaAccuracy.html">•Basic Accuracy</a></li>
          <li><a href="/docs/Theta/ThetaAccuracyPlots.html">•Accuracy Plots</a></li>
          <li><a href="/docs/Theta/ThetaErrorTable.html">•Relative Error Table</a></li>
          <li><a href="/docs/Theta/ThetaSketchSetOpsAccuracy.html">•SetOp Accuracy</a></li>
          <li><a href="/docs/Theta/AccuracyOfDifferentKUnions.html">•Unions With Different k</a></li>
        </div>

        <p id="size">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_size">Size</a>
        </p>
        <div class="collapse" id="collapse_size">
          <li><a href="/docs/Theta/ThetaSize.html">•Theta Sketch Size</a></li>
        </div>

        <p id="speed">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_speed">Speed</a>
        </p>
        <div class="collapse" id="collapse_speed">
          <li><a href="/docs/Theta/ThetaUpdateSpeed.html">•Update Speed</a></li>
          <li><a href="/docs/Theta/ThetaMergeSpeed.html">•Merge Speed</a></li>
        </div>

        <p id="theta-sketch-theory">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_theta_sketch_theory">Theta Sketch Theory</a>
        </p>
        <div class="collapse" id="collapse_theta_sketch_theory">
          <li><a href="https://github.com/apache/datasketches-website/tree/master/docs/pdf/ThetaSketchFramework.pdf">•Theta Sketch Framework (PDF)</a></li>
          <li><a href="https://github.com/apache/datasketches-website/tree/master/docs/pdf/ThetaSketchEquations.pdf">•Theta Sketch Equations (PDF)</a></li>
          <li><a href="https://github.com/apache/datasketches-website/tree/master/docs/pdf/DataSketches.pdf">•DataSketches (PDF)</a></li>
          <li><a href="/docs/Theta/ThetaConfidenceIntervals.html">•Confidence Intervals Notes</a></li>
          <li><a href="/docs/Theta/ThetaMergingAlgorithm.html">•Merging Algorithm Notes</a></li>
          <li><a href="/docs/Theta/ThetaReferences.html">•Theta References</a></li>
        </div>
      </div>

      <p id="tuple-sketches">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_tuple_sketches">Tuple Sketches</a>
      </p>
      <div class="collapse" id="collapse_tuple_sketches">
        <li><a href="/docs/Tuple/TupleOverview.html">•Tuple Overview</a></li>

        <p id="tuple-examples">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_tuple_examples">Tuple Examples</a>
        </p>
        <div class="collapse" id="collapse_tuple_examples">
          <li><a href="/docs/Tuple/TupleJavaExample.html">•Tuple Java Example</a></li>
          <li><a href="/docs/Tuple/TupleEngagementExample.html">•Tuple Engagement Example</a></li>
          <li><a href="/docs/Tuple/TuplePigUDFs.html">•Tuple Pig UDFs</a></li>
          <li><a href="/docs/Tuple/TupleHiveUDFs.html">•Tuple Hive UDFs</a></li>
        </div>
      </div>
    </div>

    <p id="most-frequent">
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_most_frequent">Most Frequent</a>
    </p>
    <div class="collapse" id="collapse_most_frequent">
      <li><a href="/docs/Frequency/FrequencySketchesOverview.html">•Frequency Sketches Overview</a></li>

      <p id="frequent-item-sketches">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_frequent_item_sketches">Frequent Item Sketches</a>
      </p>
      <div class="collapse" id="collapse_frequent_item_sketches">
        <li><a href="/docs/Frequency/FrequentItemsOverview.html">•Frequent Items Overview</a></li>
        <li><a href="/docs/Frequency/FrequentItemsErrorTable.html">•Frequent Items Error Table</a></li>
        <li><a href="/docs/Frequency/FrequentItemsReferences.html">•Frequent Items References</a></li>
        <li><a href="/docs/Frequency/FrequentItemsPerformance.html">•Frequent Items Performance</a></li>

        <p id="most-frequent-examples">
          <a data-toggle="collapse" class="menu collapsed" href="#collapse_most_frequent_examples">Most Frequent Examples</a>
        </p>
        <div class="collapse" id="collapse_most_frequent_examples">
          <li><a href="/docs/Frequency/FrequentItemsJavaExample.html">•Frequent Items Java Example</a></li>
          <li><a href="/docs/Frequency/FrequentItemsCppExample.html">•Frequent Items C++ Example</a></li>
          <li><a href="/docs/Frequency/FrequentItemsPigUDFs.html">•Frequent Items Pig UDFs</a></li>
          <li><a href="/docs/Frequency/FrequentItemsHiveUDFs.html">•Frequent Items Hive UDFs</a></li>
        </div>
      </div>

      <p id="frequent-distinct-sketches">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_frequent_distinct_sketches">Frequent Distinct Sketches</a>
      </p>
      <div class="collapse" id="collapse_frequent_distinct_sketches">
        <li><a href="/docs/Frequency/FrequentDistinctTuplesSketch.html">•Frequent Distinct Tuples Sketch</a></li>
      </div>
    </div>

    <p id="quantiles-and-histograms">
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantiles_and_histograms">Quantiles And Histograms</a>
    </p>
    <div class="collapse" id="collapse_quantiles_and_histograms">
      <li><a href="/docs/Quantiles/SketchingQuantilesAndRanksTutorial.html">•Quantiles and Ranks Tutorial</a></li>
      <li><a href="/docs/Quantiles/QuantilesOverview.html">•Quantiles Overview</a></li>
      <li><a href="/docs/KLL/KLLSketch.html">•KLL Sketch Family</a></li>
      <li><a href="/docs/KLL/KLLAccuracyAndSize.html">•KLL Sketch Accuracy and Size</a></li>
      <li><a href="/docs/REQ/ReqSketch.html">•REQ Floats sketch</a></li>
      <li><a href="/docs/Quantiles/ClassicQuantilesSketch.html">•Classic Quantiles Sketches</a></li>

      <p id="quantiles-examples">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantiles_examples">Quantiles Examples</a>
      </p>
      <div class="collapse" id="collapse_quantiles_examples">
        <li><a href="/docs/Quantiles/QuantilesJavaExample.html">•Quantiles Sketch Java Example</a></li>
        <li><a href="/docs/KLL/KLLCppExample.html">•KLL Quantiles Sketch C++ Example</a></li>
        <li><a href="/docs/Quantiles/QuantilesPigUDFs.html">•Quantiles Sketch Pig UDFs</a></li>
        <li><a href="/docs/Quantiles/QuantilesHiveUDFs.html">•Quantiles Sketch Hive UDFs</a></li>
      </div>

      <p id="quantiles-studies">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantiles_studies">Quantiles Studies</a>
      </p>
      <div class="collapse" id="collapse_quantiles_studies">
        <li><a href="/docs/QuantilesStudies/DruidApproxHistogramStudy.html">•Druid Approximate Histogram</a></li>
        <li><a href="/docs/QuantilesStudies/MomentsSketchStudy.html">•Moments Sketch Study</a></li>
        <li><a href="/docs/QuantilesStudies/QuantilesStreamAStudy.html">•Quantiles StreamA Study</a></li>
        <li><a href="/docs/QuantilesStudies/ExactQuantiles.html">•Exact Quantiles for Studies</a></li>
      </div>

      <p id="quantiles-sketch-theory">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantiles_sketch_theory">Quantiles Sketch Theory</a>
      </p>
      <div class="collapse" id="collapse_quantiles_sketch_theory">
        <li><a href="https://github.com/apache/datasketches-website/tree/master/docs/pdf/Quantiles_KLL.pdf">•Optimal Quantile Approximation in Streams</a></li>
        <li><a href="/docs/Quantiles/QuantilesReferences.html">•Quantiles References</a></li>
      </div>
    </div>

    <p id="sampling">
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_sampling">Sampling</a>
    </p>
    <div class="collapse" id="collapse_sampling">
      <li><a href="/docs/Sampling/ReservoirSampling.html">•Reservoir Sampling</a></li>
      <li><a href="/docs/Sampling/ReservoirSamplingPerformance.html">•Reservoir Sampling Performance</a></li>
      <li><a href="/docs/Sampling/VarOptSampling.html">•VarOpt Sampling</a></li>

      <p id="sampling-examples">
        <a data-toggle="collapse" class="menu collapsed" href="#collapse_sampling_examples">Sampling Examples</a>
      </p>
      <div class="collapse" id="collapse_sampling_examples">
        <li><a href="/docs/Sampling/ReservoirSamplingJava.html">•Reservoir Sampling Java Example</a></li>
        <li><a href="/docs/Sampling/ReservoirSamplingPigUDFs.html">•Reservoir Sampling Pig UDFs</a></li>
        <li><a href="/docs/Sampling/VarOptSamplingJava.html">•VarOpt Sampling Java Example</a></li>
        <li><a href="/docs/Sampling/VarOptPigUDFs.html">•VarOpt Sampling Pig UDFs</a></li>
      </div>
    </div>
  </div>

  <p id="system-integrations">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_system_integrations">System Integrations</a>
  </p>
  <div class="collapse" id="collapse_system_integrations">
    <li><a href="/docs/SystemIntegrations/ApacheDruidIntegration.html">•Using Sketches in ApacheDruid</a></li>
    <li><a href="/docs/SystemIntegrations/ApacheHiveIntegration.html">•Using Sketches in Apache Hive</a></li>
    <li><a href="/docs/SystemIntegrations/ApachePigIntegration.html">•Using Sketches in Apache Pig</a></li>
    <li><a href="/docs/SystemIntegrations/ApachePinotIntegration.html">•Using Sketches in Apache Pinot</a></li>
    <li><a href="/docs/SystemIntegrations/PostgreSQLIntegration.html">•Using Sketches in PostgreSQL</a></li>
  </div>

  <p id="community">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_community">Community</a>
  </p>
  <div class="collapse" id="collapse_community">
    <li><a href="/docs/Community/index.html">•Community</a></li>
    <li><a href="/docs/Community/Downloads.html">•Downloads</a></li>
    <li><a href="/docs/Community/NewCommitterProcess.html">•Committer Process</a></li>
    <li><a href="/docs/Community/ReleaseProcessForCppComponents.html">•Release Process For CPP Components</a></li>
    <li><a href="/docs/Community/ReleaseProcessForJavaComponents.html">•Release Process For Java Components</a></li>
    <li><a href="/docs/Community/Transitioning.html">•Transitioning from prior GitHub Site</a></li>
  </div>

  <p id="research">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_research">Research</a>
  </p>
  <div class="collapse" id="collapse_research">
    <li><a href="/docs/Community/Research.html">•Research</a></li>
  </div>
</div>
<!-- End _includes/toc.html -->


<!-- Start _includes/tocScript.html -->
<script>
  (function () {

    var findLineItem = function (path) {
      return document.querySelector(`#toc [href="${path}"]`);
    };

    function findNavItem(path) {
      return document.querySelector(`.nav [href="${path}"]`);
    }

    var highlighLineItem = function (element) {
      element.classList.add('highlight');
    };

    var checkHasClass = function (element, className) {
      return element.className.split(' ').find(function (item) { return item === className || '' })
    }

    var findAllCollapseParents = function (element) {
      var collapseMenus = [];
      var elementPointer = element;
      while (elementPointer !== document.body) {
        if (checkHasClass(elementPointer, 'collapse')) {
          collapseMenus.push(elementPointer);
        }
        elementPointer = elementPointer.parentElement
      }
      return collapseMenus
    };

    var openMenuItem = function (element) {
      // $(element).collapse('show') would start a transition, adding `in` class instead.
      element.classList.add('in');
    };

    var openAllFromList = function (elementList) {
      elementList.forEach(openMenuItem);
    };

    var highlightAndOpenMenu = function () {
      // Highlight & expand nav item in the TOC
      var currentLineItem = findLineItem(document.location.pathname);
      highlighLineItem(currentLineItem);
      openAllFromList(findAllCollapseParents(currentLineItem));

      // Highlight nav item in top navigation
      highlighLineItem(findNavItem(document.location.pathname));
    };

    $(highlightAndOpenMenu);

  }());
</script>
<!-- End _includes/tocScript.html -->

      </div>
      <!-- End ToC Block -->
      <div class="col-md-9 doc-content">
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<h1 id="introduction-to-the-quantile-sketches">Introduction to the Quantile Sketches</h1>

<p>This is a quick overview of the quantiles sketches in the library. Each of these quantile types may have one or more specific implementaions and some variation in API depending on the language. Three of the quantile sketches have mathematically provable error bounds while the fourth is an empirical algorithm.</p>

<p>The three sketches with mathematically provable error bounds are:</p>

<ul>
  <li>The Classic quantile sketch family</li>
  <li>The KLL quantile sketch family</li>
  <li>The REQ quantile sketch</li>
</ul>

<p>The one empirical quantile sketch is the T-Digest sketch.</p>

<p>The mathematical error bounds of the Classic, KLL and REQ sketches are specified with respect to rank and not with respect to quantiles.</p>

<p>The T-Digest is empirical and has no mathematical basis for estimating its error and its results are dependent on the input data. However, for many common data distributions, it can produce excellent results. Please refer to the spcific documentation about the T-Digest sketch.</p>

<p>For the Classic and KLL sketches, the difference between the rank upper bound and the rank lower bound is a 99% confidence interval and is an additive constant for all normalized ranks between 0.0 and 1.0. The specific error is a function of the parameter <i>K</i> of the sketch and can be derived from the sketch.  For example, if the rank error for a given K is 1%, then the error of a result rank of .01 is +/- .01 with a 99% confidence; the error of a result rank of .99 is +/- .01 with a 99% confidence.</p>

<p>The REQ sketch is special in that it’s error is also relative to the actual result rank (thus its name: Relative Error Quantiles). It was designed to proved very high rank accuacy for either the high end of the range of ranks (close to 1.0) or, based on the user’s choice, the low end of ranks (close to 0.0). Please refer to the spcific documentation about the REQ sketch.</p>

<p>Although upper and lower quantile bounds can be approximately computed from the upper and lower rank bounds, and the difference between the quantile bounds is also an approximate confidence interval, the size of the quantile confidence interval may not be meaningful and is not constrained by the defined rank error of the sketch.</p>

<p>For example, a 1% rank error at a result rank of .50 corresponds to a rank range of .49 to .51. However, in the quantile domain, there could be step function in the values such that the difference in the quantiles corresponding to ranks .49 and .51 are as large as the the entire dynamic range of all quantiles. It is possible to retrieve the upper and lower quantile bounds at a specific rank, but the difference between these quantile bounds may not be meaningful.</p>

<p>These sketches have many parallel methods. Please refer to the sketch API documentation by language for more information.</p>

<h3 id="the-classic-quantiles-sketch">The Classic Quantiles Sketch</h3>

<ul>
  <li>Java
    <ul>
      <li>Release 0.3.0, 25 Jan 2016</li>
      <li>Repo: <a href="https://github.com/apache/datasketches-java">https://github.com/apache/datasketches-java</a></li>
      <li>Package: org.apache.datasketches.quantiles</li>
    </ul>
  </li>
  <li>C++, Python
    <ul>
      <li>Release 1.0.0, 17 Sep 2019</li>
      <li>Repo: <a href="https://github.com/apache/datasketches-cpp">https://github.com/apache/datasketches-cpp</a></li>
    </ul>
  </li>
  <li>Key Features (both Java &amp; C++)
    <ul>
      <li>User selectable search criteria QuantileSearchCriteria:
        <ul>
          <li>Exclusive, which is compatible with the KLL and older Quantiles Sketch</li>
          <li>Inclusive, a common definition in some of the theoretical literature.</li>
        </ul>
      </li>
      <li>Accuracy %: a function of <em>K</em> and independent of rank.</li>
      <li>Dedicated <em>double</em> implentation, which can be configured for off-heap operation.</li>
      <li>Generic implementation for arbitrary comparible types.</li>
    </ul>
  </li>
</ul>

<h3 id="the-kll-sketch">The KLL Sketch</h3>

<ul>
  <li>Java
    <ul>
      <li>Release 0.11.0, 15 Mar 2018</li>
      <li>Repo: <a href="https://github.com/apache/datasketches-java">https://github.com/apache/datasketches-java</a>:</li>
      <li>Package: org.apache.datasketches.kll</li>
    </ul>
  </li>
  <li>C++, Python
    <ul>
      <li>Release 1.0.0, 17 Sep 2019</li>
      <li>Repo: <a href="https://github.com/apache/datasketches-cpp">https://github.com/apache/datasketches-cpp</a></li>
      <li>Directory: kll</li>
    </ul>
  </li>
  <li>Key Features (both Java &amp; C++)
    <ul>
      <li>User selectable comparison QuantileSearchCriteria:
        <ul>
          <li>Exclusive, which is compatible with the KLL and older Quantiles Sketch</li>
          <li>Inclusive, a common definition in some of the theoretical literature.</li>
        </ul>
      </li>
      <li>Accuracy %: a function of <em>K</em> and independent of rank.</li>
      <li>Near optimal accuracy per sketch size compared to other constant accuracy quantiles sketches.</li>
      <li>Java: Dedicated <em>float</em> and <em>double</em> implementations.</li>
      <li>C++: Template implementation for arbitrary comparible types.</li>
      <li>Python: Dedicated <em>float</em> and <em>integer</em> implementations</li>
    </ul>
  </li>
</ul>

<h3 id="the-req-sketch">The REQ Sketch</h3>

<ul>
  <li>Java
    <ul>
      <li>Release 2.0.0, 12 Feb 2021</li>
      <li>Repo: <a href="https://github.com/apache/datasketches-java">https://github.com/apache/datasketches-java</a></li>
      <li>Package: org.apache.datasketches.req</li>
    </ul>
  </li>
  <li>C++, Python
    <ul>
      <li>Release 2.2.0, Soon</li>
      <li>Repo: <a href="https://github.com/apache/datasketches-cpp">https://github.com/apache/datasketches-cpp</a></li>
      <li>Directory: req</li>
    </ul>
  </li>
  <li>Key Features (both Java &amp; C++)
    <ul>
      <li>Accuracy %: a function of <em>K</em> and <strong>relative</strong> with respect to rank. The user can select either High Rank Accuracy (HRA) or Low Rank Accuracy (LRA). This enables extremely high accuracy for the ends of the rank domain. E.g., 99.999%ile quantiles.</li>
      <li>User selectable comparison QuantileSearchCriteria:
        <ul>
          <li>Exclusive, which is compatible with the KLL and older Quantiles Sketch</li>
          <li>Inclusive, a common definition in some of the theoretical literature.</li>
        </ul>
      </li>
      <li>Java: Dedicated <em>float</em> implementation.</li>
      <li>C++: Template implementation for arbitrary comparible types.</li>
      <li>Python: Dedicated <em>float</em> and <em>integer</em> implementations.</li>
    </ul>
  </li>
</ul>


      </div> <!-- End content -->
    </div> <!-- End row -->
  </div> <!-- End Container -->

<!-- Start _include/page_footer.html -->
<footer class="ds-footer">
  <div class="container">
    <div class="text-center">
      <p>
        <div>Copyright © 2024 <a href="https://www.apache.org">Apache Software Foundation</a>, 
          Licensed under the Apache License, Version 2.0. All Rights Reserved.
          | <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a><br/>
          Apache DataSketches, Apache, the Apache feather logo, and the Apache DataSketches project logos are trademarks of The Apache Software Foundation.<br/>
          All other marks mentioned may be trademarks or registered trademarks of their respective owners.
        </div>
      </p>
    </div>
  </div>
</footer>
<!-- End _include/page_footer.html -->

</body>

</html>
<!-- End _layouts/doc_page.html-->