---
layout: default
title: Apache ORC &bull; High-Performance Columnar Storage for Hadoop
overview: true
---

<section class="intro">
  <div class="grid">
    <div class="unit whole center-on-mobiles">
      <p class="first">the smallest, fastest columnar storage for Hadoop
          workloads.</p>
    </div>
  </div>
</section>
<section class="features">
  <div class="grid">
    <div class="unit one-third">
      <h2>ACID Support</h2>
      <p>Includes support for ACID transactions and snapshot
         isolation</p>
      <a href="/docs/acid.html">ACID support &rarr;</a>
    </div>
    <div class="unit one-third">
      <h2>Built-in Indexes</h2>
      <p>Jump to the right row with indexes including minimum, maximum,
	 and bloom filters for each column.</p>
      <a href="/docs/indexes.html">ORC's indexes &rarr;</a>
    </div>
    <div class="unit one-third">
      <h2>Complex Types</h2>
      <p>Supports all of Hive's types including the compound types:
         structs, lists, maps, and unions</p>
      <a href="/docs/types.html">ORC's types &rarr;</a>
    </div>
    <div class="clear"></div>
  </div>
</section>
<section class="quickstart">
  <div class="grid">
    <div class="unit golden-small center-on-mobiles">
      <p class = "side">Download the current <a href="docs/releases.html">
                        ORC release.</a></p>
    </div>
    <div class="unit golden-large code">
      <p class="title">Quickstart Documentation</p>
      <ul class="shell">
        <li><a href="docs/hive-ddl.html">Using with Hive</a></li>
        <li><a href="docs/mapred.html">Using with Hadoop MapRed</a></li>
        <li><a href="docs/mapreduce.html">Using with Hadoop MapReduce</a></li>
        <li><a href="docs/core-java.html">Using Core ORC from Java</a></li>
      </ul>
    </div>
    <div class="clear"></div>
  </div>
</section>
<section class="apache">
  <div class="grid">
    <div class="unit whole">
      <div class="grid pane">
        <div class="unit whole center-on-mobiles">
          <a href="https://www.apache.org">
             <img src="img/asf_logo.png" width="429" height="175"
                  alt="Apache Software Foundation"></a>
          <div class="pane-content">
            <h2 class="center-on-mobiles">ORC is an <strong>Apache</strong>
                                          project.</h2>
            <p>Apache is a non-profit organization helping open-source
               software projects released under the Apache
               <a href="https://www.apache.org/licenses/">license</a>
               and managed with
               <a href="https://www.apache.org/foundation/how-it-works.html">
	        open governance</a>. If you discover any
	       <a href="security/">security</a> vulnerabilities, please
	       report them privately. Finally,
               <a href="https://www.apache.org/foundation/thanks.html">thanks
               </a> to the sponsors who
               <a href="https://www.apache.org/foundation/sponsorship.html">
               donate</a> to the Apache Foundation.
            </p>
          </div>
        </div>
        <div class="clear"></div>
      </div>
    </div>
  </div>
</section>
