These notes are for Pig 0.10.1 release.

Highlights
==========

This is a maintenance release of Pig 0.10. See CHANGES.txt for a list of changes.

If you want to run unit test, make sure to set umask to 0022 before running unit
test (we also see unit test fail due to extended acl, use setfacl -b to remove
extened acl if applicable).

System Requirements
===================

1. Java 1.6.x or newer, preferably from Sun. Set JAVA_HOME to the root of your
Java installation
2. Ant build tool:  http://ant.apache.org - to build source only
3. Cygwin: http://www.cygwin.com/ - to run under Windows 
4. This release is compatible with all Hadoop 0.20.X, 1.X, 0.23.X and 2.X releases

Trying the Release
==================

1. Download pig-0.10.1.tar.gz
2. Unpack the file: tar -xzvf pig-0.10.1.tar.gz
3. Move into the installation directory: cd pig-0.10.1
4. To run pig without Hadoop cluster, execute the command below. This will
take you into an interactive shell called grunt that allows you to navigate
the local file system and execute Pig commands against the local files
    bin/pig -x local
5. To run on your Hadoop cluster, you need to set PIG_CLASSPATH environment
variable to point to the directory with your hadoop-site.xml file and then run
pig. The commands below will take you into an interactive shell called grunt
that allows you to navigate Hadoop DFS and execute Pig commands against it
export PIG_CLASSPATH=/hadoop/conf
    bin/pig
6. To build your own version of pig.jar run
    ant
7. To run unit tests run
    ant test 
8. To build jar file with available user defined functions run commands below.
This currently only works with Java 1.6.x.
    cd contrib/piggybank/java
    ant
9. To build the tutorial:
    cd tutorial
    ant
10. To run tutorial follow instructions in http://wiki.apache.org/pig/PigTutorial

Relevant Documentation
======================

Pig Language Manual(including Grunt commands):
http://pig.apache.org/docs/r0.10.0/
Pig Tutorial: https://cwiki.apache.org/confluence/display/PIG/PigTutorial
