<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta charset="UTF-8">
  <title>Powered by Calcite</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="generator" content="Jekyll v4.2.2">
  <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
  <link rel="stylesheet" href="/css/screen.css">
  <link rel="icon" type="image/x-icon" href="/favicon.ico">
</head>


<body class="wrap">
  <header role="banner">
  <div class="grid">
    <div class="unit center-on-mobiles">
      <h1>
        <a href="/">
          <span class="sr-only">Apache Calcite</span>
          <img src="/img/logo.svg" alt="Calcite Logo">
        </a>
      </h1>
    </div>
    <nav class="main-nav">
      <ul>
  <li class="">
    <a href="/">Home</a>
  </li>
  <li class="">
    <a href="/downloads/">Download</a>
  </li>
  <li class="">
    <a href="/community/">Community</a>
  </li>
  <li class="">
    <a href="/develop/">Develop</a>
  </li>
  <li class="">
    <a href="/news/">News</a>
  </li>
  <li class="current">
    <a href="/docs/">Docs</a>
  </li>
</ul>

    </nav>
  </div>
</header>


    <section class="docs">
    <div class="grid">

      <div class="docs-nav-mobile unit whole show-on-mobiles">
  <select onchange="if (this.value) window.location.href=this.value">
    <option value="">Navigate the docs…</option>
        <optgroup label="Overview">      
    </optgroup>
    <optgroup label="Advanced">      
    </optgroup>
    <optgroup label="Avatica">      
    </optgroup>
    <optgroup label="Reference">      
    </optgroup>
    <optgroup label="Meta">      
    </optgroup>

  </select>
</div>


      <div class="unit four-fifths">
        <article>
          <h1>Powered by Calcite</h1>
          <!--

-->

<p>The following companies and projects are powered by Apache Calcite.</p>

<p><img src="/img/powered-by.png" alt="Companies and projects"></p>

<ul id="markdown-toc">
  <li><a href="#alibaba-maxcompute" id="markdown-toc-alibaba-maxcompute">Alibaba MaxCompute</a></li>
  <li><a href="#apache-apex" id="markdown-toc-apache-apex">Apache Apex</a></li>
  <li><a href="#apache-beam" id="markdown-toc-apache-beam">Apache Beam</a></li>
  <li><a href="#apache-drill" id="markdown-toc-apache-drill">Apache Drill</a></li>
  <li><a href="#apache-flink" id="markdown-toc-apache-flink">Apache Flink</a></li>
  <li><a href="#apache-hive" id="markdown-toc-apache-hive">Apache Hive</a></li>
  <li><a href="#apache-kylin" id="markdown-toc-apache-kylin">Apache Kylin</a></li>
  <li><a href="#apache-phoenix" id="markdown-toc-apache-phoenix">Apache Phoenix</a></li>
  <li><a href="#apache-samza" id="markdown-toc-apache-samza">Apache Samza</a></li>
  <li><a href="#apache-storm" id="markdown-toc-apache-storm">Apache Storm</a></li>
  <li><a href="#athenax" id="markdown-toc-athenax">AthenaX</a></li>
  <li><a href="#cascading" id="markdown-toc-cascading">Cascading</a></li>
  <li><a href="#dremio" id="markdown-toc-dremio">Dremio</a></li>
  <li><a href="#herddb" id="markdown-toc-herddb">HerdDB</a></li>
  <li><a href="#omnisci" id="markdown-toc-omnisci">OmniSci</a></li>
  <li><a href="#qubole-quark" id="markdown-toc-qubole-quark">Qubole Quark</a></li>
  <li><a href="#sql-gremlin" id="markdown-toc-sql-gremlin">SQL-Gremlin</a></li>
  <li><a href="#tbds" id="markdown-toc-tbds">TBDS</a></li>
</ul>

<p>Is your company or project powered by Calcite?
<a href="https://github.com/apache/calcite/blob/main/site/_docs/powered_by.md">Add it to this page</a>
and then use the “powered by Apache Calcite” logo
(<a href="/img/pb-calcite-140.png">140 px</a>
or <a href="/img/pb-calcite-240.png">240 px</a>)
on your site.</p>

<p><img src="/img/pb-calcite-240.png" alt="Powered By"></p>

<h3 id="alibaba-maxcompute">Alibaba MaxCompute</h3>

<p><a href="https://www.alibabacloud.com">Alibaba</a>’s
<a href="https://www.alibabacloud.com/product/maxcompute">MaxCompute</a>
big data computing and storage platform
uses Calcite for cost-based query optimization.</p>

<h3 id="apache-apex">Apache Apex</h3>

<p><a href="https://apex.apache.org">Apache Apex</a>
uses Calcite for parsing streaming SQL and query optimization.</p>

<h3 id="apache-beam">Apache Beam</h3>

<p><a href="https://beam.apache.org">Apache Beam</a>
uses Calcite for parsing and optimizing SQL.</p>

<h3 id="apache-drill">Apache Drill</h3>

<p><a href="https://drill.apache.org">Apache Drill</a>
uses Calcite for SQL parsing and query optimization.</p>

<h3 id="apache-flink">Apache Flink</h3>

<p><a href="https://flink.apache.org">Apache Flink</a>
uses Calcite for parsing both regular and streaming SQL,
and for query optimization.</p>

<h3 id="apache-hive">Apache Hive</h3>

<p><a href="https://hive.apache.org">Apache Hive</a>
uses Calcite for cost-based query optimization.</p>

<h3 id="apache-kylin">Apache Kylin</h3>

<p><a href="https://kylin.apache.org">Apache Kylin</a>
uses Calcite for SQL parsing and query optimization.</p>

<h3 id="apache-phoenix">Apache Phoenix</h3>

<p><a href="https://phoenix.apache.org">Apache Phoenix</a>
uses Calcite for SQL parsing and query optimization (under development),
and also uses Avatica for its remote JDBC driver.</p>

<h3 id="apache-samza">Apache Samza</h3>

<p><a href="https://github.com/milinda/samza-sql">SamzaSQL</a>,
an extension to
<a href="https://samza.apache.org">Apache Samza</a>,
uses Calcite for parsing streaming SQL and query optimization.</p>

<h3 id="apache-storm">Apache Storm</h3>

<p><a href="https://storm.apache.org">Apache Storm</a>
uses Calcite for parsing streaming SQL and query optimization.</p>

<h3 id="athenax">AthenaX</h3>

<p><a href="https://www.uber.com/">Uber</a>’s SQL-based streaming analytics platform
<a href="https://github.com/uber/AthenaX/">AthenaX</a>
uses Calcite for parsing SQL and query optimization.</p>

<h3 id="cascading">Cascading</h3>

<p><a href="https://github.com/Cascading/lingual">Lingual</a>
component provides a SQL interface to
<a href="https://www.cascading.org/">Cascading</a>.</p>

<h3 id="dremio">Dremio</h3>

<p><a href="https://www.dremio.com">Dremio</a>
uses Calcite for SQL parsing and cost-based query optimization.</p>

<h3 id="herddb">HerdDB</h3>

<p><a href="https://herddb.org">HerdDB</a>
is a distributed JVM-Embeddable Database built on top of
<a href="https://bookkeeper.apache.org/">Apache BookKeeper</a>.
It uses Calcite as its SQL Planner.</p>

<h3 id="omnisci">OmniSci</h3>

<p><a href="https://www.omnisci.com">OmniSci</a>
is a GPU-powered database and visual analytics platform for
interactive exploration of large datasets.</p>

<h3 id="qubole-quark">Qubole Quark</h3>

<p><a href="https://github.com/qubole/quark">Quark</a>
is a data virtualization engine over analytic databases.
It uses Calcite to transparently rewrite queries to use materialized views.</p>

<h3 id="sql-gremlin">SQL-Gremlin</h3>

<p><a href="https://github.com/twilmes/sql-gremlin">SQL-Gremlin</a>
is a SQL interface to a
<a href="https://tinkerpop.apache.org/">Apache TinkerPop</a>-enabled
graph database.</p>

<h3 id="tbds">TBDS</h3>

<p><a href="https://cloud.tencent.com/product/tbds">TBDS</a> (Tencent Big Data Suite) is a platform for big data storage and processing. It uses calcite for SQL parsing and query optimization.</p>

          





  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  

  
  
    <div class="section-nav">
      <div class="left align-right">
          
            
            
            <a href="/docs/history.html" class="prev">Previous</a>
          
      </div>
      <div class="right align-left">
          
            
            

            
            <a href="/javadocAggregate/" class="next">Next</a>
          
      </div>
    </div>
    <div class="clear"></div>
    

        </article>
      </div>

      <div class="unit one-fifth hide-on-mobiles">
  <aside>
    
    <h4>Overview</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/docs/index.html">Background</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/tutorial.html">Tutorial</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/algebra.html">Algebra</a></li>


</ul>

    
    <h4>Advanced</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/docs/adapter.html">Adapters</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/spatial.html">Spatial</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/stream.html">Streaming</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/materialized_views.html">Materialized Views</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/lattice.html">Lattices</a></li>


</ul>

    
    <h4>Avatica</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/docs/avatica_overview.html">Overview</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/avatica_roadmap.html">Roadmap</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/avatica_json_reference.html">JSON Reference</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/avatica_protobuf_reference.html">Protobuf Reference</a></li>


</ul>

    
    <h4>Reference</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/docs/reference.html">SQL language</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/model.html">JSON/YAML models</a></li>


  
  
  
  

  

  <li class=""><a href="/docs/howto.html">HOWTO</a></li>


</ul>

    
    <h4>Meta</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/docs/history.html">History</a></li>


  
  
  
  

  

  <li class="current"><a href="/docs/powered_by.html">Powered by Calcite</a></li>


  
  
  
  

  

  <li class=""><a href="/javadocAggregate">API</a></li>


</ul>

    
  </aside>
</div>


      <div class="clear"></div>

    </div>
  </section>


  <footer role="contentinfo">
  <div id="poweredby">
    <a href="http://www.apache.org/">
      <span class="sr-only">Apache</span>
      <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
  </div>
  <div id="copyright">
  <p>The contents of this website are Copyright © 2023
     <a href="https://www.apache.org/">Apache Software Foundation</a>
     under the terms of
     the <a href="https://www.apache.org/licenses/">
     Apache License v2</a>. Apache Calcite and its logo are
     trademarks of the Apache Software Foundation.
  </p>
  <p>
      <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
  </p>
  </div>
</footer>

  <script>
  var anchorForId = function (id) {
    var anchor = document.createElement("a");
    anchor.className = "header-link";
    anchor.href      = "#" + id;
    anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
    anchor.title = "Permalink";
    return anchor;
  };

  var linkifyAnchors = function (level, containingElement) {
    var headers = containingElement.getElementsByTagName("h" + level);
    for (var h = 0; h < headers.length; h++) {
      var header = headers[h];

      if (typeof header.id !== "undefined" && header.id !== "") {
        header.appendChild(anchorForId(header.id));
      }
    }
  };

  document.onreadystatechange = function () {
    if (this.readyState === "complete") {
      var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
      if (!contentBlock) {
        return;
      }
      for (var level = 1; level <= 6; level++) {
        linkifyAnchors(level, contentBlock);
      }
    }
  };
</script>


</body>
</html>
