---
layout: default
title: Accumulo Storage with Pig
---
<p> 
    <a href="http://accumulo.apache.org">Apache Accumulo</a> is a sorted, distributed, key-value store built using <a href="http://hadoop.apache.org">Apache
        Hadoop</a> and <a href="http://zookeeper.apache.org">Apache ZooKeeper</a>. <a href="http://pig.apache.org">Apache Pig</a> is a platform for analyzing
    large data sets using a high-level expression language, <em>Pig Latin</em>. This project intends to provide the mechanisms for storage and retrieval of data stored in Accumulo
    using Pig's expression language
</p>

<p>
    This work was initially based on a contribution by Jason Trost to Apache Accumulo, but has been recently revitalized to ensure compatibility with all stable
versions of Apache Accumulo as well as supporting as much of Pig Latin's functionality as efficiently as possible.
</p>


<p>
The code can be viewed at <a href="http://git-wip-us.apache.org/repos/asf?p=accumulo-pig.git">accumulo-pig.git</a> or can be cloned using <a
    href="http://git-scm.com">Git</a>

<pre class="code" style="padding-bottom:15px; width: auto">
git clone https://git-wip-us.apache.org/repos/asf/accumulo-pig.git
</pre>
</p>

<p>If you're interested, please continue on to the <a href="docs/introduction">introduction</a>.</p.
