<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">

<link rel="canonical" href="http://hawq.apache.org/"/>

<title>Apache HAWQ&reg</title>

<link href='images/favicon.ico' rel='shortcut icon' type='image/vnd.microsoft.icon'>

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

<script src="script/smooth.js" type="text/javascript"></script>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-68036004-1', 'auto');
  ga('send', 'pageview');

</script>

</head>

<body>

  <a class="scroll-point pt-top" id="top"></a>

  <div id="header">

    <div class="wrap">

      <a class="logo" href="#top">
        <img src="images/logo-hawq.png" alt=""/>
      </a>


      <div class="menu">
        <a href="#about">About</a>
        <a href="#contribute">Contribute</a>
        <a href="#mailing-lists">Mailing Lists</a>
        <a href="#download">Download</a>
        <a href="#docs">Docs</a>
        <a href="#more">More&hellip;</a>
      </div>

      <form class="menu-dropdown">
        <select onchange="location = this.options[this.selectedIndex].value;">
          <option value="#about">About</option>
          <option value="#contribute">Contribute</option>
          <option value="#mailing-lists">Mailing Lists</option>
          <option value="#download">Download</option>
          <option value="#more">More&hellip;</option>
        </select>
      </form>

    </div>

    <div class="shadow"></div>

  </div>

  <div class="header-placeholder"></div>

  <div class="grid leadin">

    <div class="wrap">

      <!-- <img src="images/logo-hawq-placeholder.jpg" alt=""/> -->

      <ul class="text-block">
        <!-- <li><h1><strong>Apache HAWQ&reg</strong> is</h1></li> -->
        <li><h1><strong>Apache Hadoop Native SQL.</strong> </h1></li>
        <li><h1><strong>Advanced</strong>, MPP, elastic query engine  </h1></li>
        <li><h1>and <strong>analytic database</strong> for <strong>enterprises</strong>.</h1></li>
      </ul>

      <div class="button-container">
        <a class="button" href="#download">DOWNLOAD<small class="download-version">3.0.0.0 (August 18, 2021)</small></a>
      </div>

    </div>

  </div>

  <a class="scroll-point pt-about" id="about"></a>

  <div class="wrap feature">

    <h2>Apache HAWQ is Apache Hadoop Native SQL. <br />Advanced Analytics MPP Database for Enterprises.</h2>

    <p>In a class by itself, only Apache HAWQ combines exceptional MPP-based analytics performance, robust ANSI SQL compliance, Hadoop ecosystem integration and manageability, and flexible data-store format support. All natively in Apache Hadoop. No connectors required.</p>

    <p>Built from a decade’s worth of massively parallel processing (MPP) expertise developed through the creation of the Pivotal Greenplum® enterprise database and open source PostgreSQL, HAWQ&reg enables to you to swiftly and interactively query Hadoop data, natively via HDFS.</p>

    <p>On Aug 15, 2018, the ASF Board established Apache HAWQ as a Top Level Project, which was approved by unanimous vote of the directors present. Please see the associated press release from the ASF. HAWQ entered incubation in September of 2015 and made four releases as an incubating project. Along the way, the HAWQ community has worked hard to ensure that the project is being developed according to the principles of the The Apache Way. We will continue to do so in the future as a TLP, to the best of our ability.
</p>
    <p>

    <table>
      <tr>
        <td valign='top'>
          <p><strong>Exceptional <br/>performance</strong></p>
          <p>HAWQ&reg’s parallel processing architecture delivers high performance throughput and low latency - potentially near real time - query responses that can scale to petabyte-sized datasets. Operate natively in Apache Hadoop.</p>
        </td>
        <td valign='top'>
          <p><strong>Robust ANSI SQL compliance</strong></p>
          <p>Leverage familiar skills. Achieve higher levels of compatibility for SQL-based applications and BI/data visualization tools. Execute complex queries and joins, including roll-ups and nested queries.</p>
        </td>
        <td valign='top'>
          <p><strong>Apache Hadoop ecosystem manageability and integration</strong></p>
          <p>Integrate and manage with Apache YARN. Provision with Apache Ambari. Interface with Apache HCatalog. HAWQ&reg supports Apache Parquet, Apache AVRO, Apache HBase, and others. Easily scale nodes up or down to meet performance or capacity requirements.</p>
        </td>
      </tr>
    </table>

    <br/>
    <br/>

    <p>Plus, HAWQ&reg works with <a href="http://madlib.apache.org">Apache MADlib</a> machine learning libraries to execute advanced analytics for data-driven digital transformation, modern application development, data science purposes, and more.</p>

  </div>

  <a class="scroll-point" id="contribute"></a>

  <hr>

  <div class="feature">
    <div class="wrap">
      <h2 class="icon icon-contribute">Contribute to Advanced Enterprise Technology!</h2>

      <p>HAWQ&reg is breaking new ground for advanced analytics and machine learning in Apache Hadoop. All contributors welcome! Get involved with the next wave in Hadoop analytic database technology. HAWQ&reg is fully open source with Apache. Everything from this community, website, and the code itself has been developed by a community of people who want to support and propel HAWQ&reg technology.</p>

      <p>We especially welcome additions and corrections to the documentation, wiki, and website to improve user experiences.  Bug reports, and fixes and additions to the HAWQ&reg code are welcome. Helping users learn best practices also earns good karma in our community.</p>

    </div>
    <br/>
    <div class="grid contribute">
      <div class="wrap cf">
        <div class="skill-card">
          <div class="stripe"></div>
          <div class="skill-card-content">
            <h3>
              <span class="core card-icon"></span>
              <span class="skill-card-heading-text">Apache HAWQ Code</span>
            </h3>
            <p class="skill-card-slogan">
              Got an idea for a feature or fix for HAWQ? We welcome contributors. Please discuss in the dev mail list, post an issue on Jira, or make pull requests on Github.
            </p>
            <ul>

              <li>&mdash; <a href="http://mail-archives.apache.org/mod_mbox/hawq-dev/">HAWQ Dev mail list</a></li>
              <li>&mdash; <a href="https://issues.apache.org/jira/browse/HAWQ">HAWQ Issues</a></li>
              <li>&mdash; <a href="http://github.com/apache/hawq">HAWQ Github</a></li>
            </ul>
          </div>
        </div>

        <div class="skill-card">
          <div class="stripe"></div>
          <div class="skill-card-content">
            <h3>
              <span class="fauxton card-icon"></span>
              <span class="skill-card-heading-text">Apache MADlib</span>
            </h3>
            <p class="skill-card-slogan">
              Apache MADlib is a SQL-based advanced analytics and machine learning library that works with Apache HAWQ&reg.
            </p>
            <ul>
              <li>&mdash; <a href="http://madlib.apache.org/">Visit Apache MADlib community</a></li>
            </ul>
          </div>
        </div>

        <div class="skill-card">
          <div class="stripe"></div>
          <div class="skill-card-content">
            <h3>
              <span class="marketing card-icon"></span>
              <span class="skill-card-heading-text">Evangelism</span>
            </h3>
            <p class="skill-card-slogan">
              Are you a HAWQ expert? Want to share your knowledge with others? We are collaborative community that shares best practices.
            </p>
            <ul>
              <li>&mdash; <a href="https://cwiki.apache.org/confluence/display/HAWQ">HAWQ Meetups</a><a class="scroll-point" id="docs"></a></li>
              <li>&mdash; <a href="http://mail-archives.apache.org/mod_mbox/hawq-user/">HAWQ User mail list</a></li>
              <li>&mdash; <a href="https://twitter.com/ApacheHAWQ">HAWQ social media</a></li>
            </ul>
          </div>
        </div>
      </div>

      <div class="wrap cf">

        <div class="skill-card">
          <div class="stripe"></div>
          <div class="skill-card-content">
            <h3>
              <span class="marketing card-icon"></span>
              <span class="skill-card-heading-text">Website</span>
            </h3>
            <p class="skill-card-slogan">
              Even this website is a work of our community. Got a suggestion, fix, or even a redesign idea? Please contribute.
            </p>
            <ul>
              <li>&mdash; <a href="http://mail-archives.apache.org/mod_mbox/hawq-dev/">HAWQ Dev mail list</a></li>
              <li>&mdash; <a href="https://issues.apache.org/jira/browse/HAWQ">HAWQ Issues</a></li>
              <li>&mdash; <a href="https://github.com/apache/hawq-site">Website on GitHub</a></li>
            </ul>
          </div>
        </div>

        <div class="skill-card">
          <div class="stripe"></div>
          <div class="skill-card-content">
            <h3>
              <span class="marketing card-icon"></span>
              <span class="skill-card-heading-text">Documentation</span>
            </h3>
            <p class="skill-card-slogan">
              Documentation and how-to tips can always be made clearer, better organized, more complete, and translated to more languages.
            </p>
            <ul>
              <li>&mdash; <a href="docs/userguide/2.3.0.0-incubating/tutorial/overview.html">Getting Started with HAWQ</a></li>
              <li>&mdash; <a href="https://cwiki.apache.org/confluence/display/HAWQ">HAWQ Wiki</a></li>
              <li>&mdash; <a href="docs/userguide/latest/index.html">HAWQ Docs</a></li>
              <li>&mdash; <a href="http://hawq.apache.org/docs/pxf/javadoc/">PXF Java API</a></li>
            </ul>
          </div>
        </div>

        <div class="skill-card">
          <div class="stripe"></div>
          <div class="skill-card-content">
            <h3>
              <span class="marketing card-icon"></span>
              <span class="skill-card-heading-text">User Questions</span>
            </h3>
            <p class="skill-card-slogan">
              Looking for an answer to a specific question? Are you an expert who likes to answer questions? Engage here:
            </p>
            <ul>
              <li>&mdash; <a href="http://mail-archives.apache.org/mod_mbox/hawq-user/">HAWQ User email list</a></li>
              <li>&mdash; <a href="http://stackoverflow.com/questions/tagged/hawq">HAWQ on StackOverflow</a></li>
              <li>&mdash; <a href="http://cdn.meme.am/instances/500x/47360362.jpg">HAWQ HipChat</a></li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>

  <a class="scroll-point" id="mailing-lists"></a>

  <div class="wrap">
    <h2 class="icon icon-mailing-lists">Mailing Lists</h2>
  </div>

  <div class="grid">

    <div class="wrap">

      <div class="corner"></div>


      <div class="list-header">
        <a href="http://mail-archives.apache.org/mod_mbox/hawq-dev/"><strong>Mail Search</strong></a>
        <p>Search all of our mailing lists at once.</p>
      </div>

      <div class="list mailing-list">
        <form action="http://markmail.org/search/list:org.apache.hawq-*">
          <input id="search-box" type="text" placeholder="Search query&hellip;" name="q" size="50"><button id="search-button"></button>
        </form>
      </div>

      <br>
      <div class="list-header">
        <a href="http://mail-archives.apache.org/mod_mbox/hawq-dev/"><strong>Dev List</strong></a>
        <a id="dev-mailing-list" class="hash-target">&nbsp;</a>
        <a href="mailto:dev-subscribe@hawq.apache.org">Subscribe</a> &middot;
        <a href="mailto:dev@hawq.apache.org">Post</a> &middot;
        <a href="mailto:dev-unsubscribe@hawq.apache.org">Unsubscribe</a>
        <p>Mailing list for HAWQ&reg developers community.<p>
      </div>

      <div class="list-header">
        <a href="http://mail-archives.apache.org/mod_mbox/hawq-user/"><strong>User List</strong></a>
        <a id="user-mailing-list" class="hash-target">&nbsp;</a>
        <a href="mailto:user-subscribe@hawq.apache.org">Subscribe</a> &middot;
        <a href="mailto:user@hawq.apache.org">Post</a> &middot;
        <a href="mailto:user-unsubscribe@hawq.apache.org">Unsubscribe</a>
        <p>Mailing list for HAWQ&reg user community.<p>
      </div>

    </div>

  </div>

  <a class="scroll-point pt-download" id="download"></a>

  <div class="wrap download-pane">
    <h2 class="icon icon-download">Download HAWQ&reg 3.0.0.0</h2>
  </div>

  <div class="grid">
    <div class="wrap">
      <div class="corner"></div>
      <div class="download-list-container">
        <a href="#verify">You must verify the downloaded files.</a> <br>
        <ul class="list download-list">
          <li>
            <a href="http://apache.org/dyn/closer.cgi/hawq/3.0.0.0/apache-hawq-rpm-3.0.0.0.tar.gz" class="type">Binary</a>
            <span class="info">
              Version 3.0.0.0 |
              <a href="https://cwiki.apache.org/confluence/display/HAWQ/Release+Notes">Release Notes</a> |
              <a href="https://www.apache.org/dist/hawq/3.0.0.0/apache-hawq-rpm-3.0.0.0.tar.gz.asc">PGP</a> |
              <a href="https://www.apache.org/dist/hawq/3.0.0.0/apache-hawq-rpm-3.0.0.0.tar.gz.sha256">SHA-256</a>
            </span>
          </li>
          <li>
            <a href="http://apache.org/dyn/closer.cgi/hawq/3.0.0.0/apache-hawq-src-3.0.0.0.tar.gz" class="type">Source</a>
            <span class="info">
              Version 3.0.0.0 |
              <a href="https://cwiki.apache.org/confluence/display/HAWQ/Release+Notes">Release Notes</a> |
              <a href="https://www.apache.org/dist/hawq/3.0.0.0/apache-hawq-src-3.0.0.0.tar.gz.asc">PGP</a> |
              <a href="https://www.apache.org/dist/hawq/3.0.0.0/apache-hawq-src-3.0.0.0.tar.gz.sha256">SHA-256</a>
            </span>
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="wrap download-pane">
    <h2 class="icon icon-download"><a href="https://archive.apache.org/dist/hawq/">Download archive releases.</a></h2>
  </div>

  <div class="grid">
    <div class="wrap">
        <a href="#verify">You must verify the downloaded files.</a> <br>
    </div>
  </div>

  <a class="scroll-point pt-verify" id="verify"></a>

  <div class="wrap">
      <div class="corner"></div>
          <div class="download-list-container"><h2 id="how-to-verify"><a href="http://www.apache.org/info/verification.html">How to verify downloaded files?</a></h2>
              <p>
                  <strong>Note</strong>: When downloading from a mirror, please be sure to verify that checksums and signatures are correct. To do so, use the checksum and signature files from the main Apache site at 
                  <a href="https://www.apache.org/dist/hawq/">https://www.apache.org/dist/hawq/</a>. Check here to get all the verification required files including OpenPGP keys that we used to sign releases: 
                  <a href="https://www.apache.org/dist/hawq/KEYS">KEYS</a>
              </p>
              <p>
                  The PGP signatures can be verified using GPG. First download the <a href="https://www.apache.org/dist/hawq/KEYS">KEYS</a> 
                  as well as the asc signature file for the particular distribution. Then verify the signatures using:
              </p>
              <p>
                  % gpg --import KEYS
                  <br>
                  % gpg --verify ${filename}.tar.gz.asc ${filename}.tar.gz
              </p>
              <p>
                  Alternatively, you can verify the SHA signature on the files.<br>
                  For example, to check a SHA256 sum of a file:<br>
                  On Linux:<br>
                  % sha256sum filename.sha<br>
                  On Mac:<br>
                  % shasum -a 256 filename.sha
              </p>
      </div>
  </div>

  <a class="scroll-point" id="more"></a>


  <div class="wrap more-pane">

    <h2 class="icon icon-more">More &hellip;</h2>

    <br>

    <ul class="more-header">
      <!-- <li>General</li> -->
      <!-- <li>Development</li> -->
      <li class="last">Apache Software Foundation</li>
    </ul>

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

  </div>

  <div class="grid">

    <div class="wrap">

      <div class="list-container">

<!--         <ul class="list more">
          <li class="corner"></li>
          <li><a href="http://docs.hawq.org/en/latest/">Documentation<span></span></a>
          <li><a href="https://cwiki.apache.org/confluence/display/hawq/Current+Releases">Current Releases<span></span></a></li>
          <li><a href="http://blog.hawq.org/">Blog<span></span></a>
          <li><a href="http://hawq.apache.org/bylaws.html">Bylaws<span></span></a>
          <li><a href="http://hawq.apache.org/conduct.html">Code of Conduct<span></span></a>
        </ul>

        <ul class="list more">
          <li class="corner"></li>
          <li><a href="http://wiki.apache.org/hawq/">Wiki<span></span></a></li>
          <li><a href="https://issues.apache.org/jira/browse/hawq">Issue Tracker<span></span></a></li>
          <li><a href="https://github.com/apache/hawq/pulls">Pull Requests<span></span></a></li>
          <li><a href="https://github.com/apache?query=hawq">Git Mirrors<span></span></a></li>
        </ul> -->

        <ul class="list more last">
          <!-- <li class="corner"></li> -->
          <li><a href="http://www.apache.org/">About the ASF<span></span></a></li>
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks<span></span></a></li>
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor<span></span></a></li>
          <li><a href="http://www.apache.org/security/">Security<span></span></a></li>
          <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License<span></span></a></li>
        </ul>

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

      </div>

    </div>

  </div>

  <div class="footer">
    <div class="container">
          <img src='http://apache.org/images/asf-logo.gif' width="310" height="80"/>
        <br/>
        <br/>
      <p>
        Copyright &copy; <script> var d = new Date();document.write(d.getFullYear());</script> <a href='http://www.apache.org/'>The Apache Software Foundation</a>
        <br>
        Apache, Apache HAWQ, the Apache feather and the HAWQ logo are trademarks of The Apache Software Foundation
      </p>
    </div>
  </div>
  <script type="text/javascript" src="https://issues.apache.orgg/jira/s/1c67ff5e37d44b99a6a3140ab88552c8-T/en_UK1zkmuk/6332/7/1.4.15/_/download/batch/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector.js?locale=en-UK&collectorId=c4088f46"></script>

</body>

</html>
