Apache Crunch
Copyright 2012 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


In addition, the binary distribution of this product includes the
following software:

This product includes JUnit under the Common Public License Version 1.0
See http://www.junit.org/

This product includes snappy-java
See http://code.google.com/p/snappy-java/

This product includes Javassist under the Apache License, Version 2.0
See http://www.javassist.org/

This product includes Parquet under the Apache License, Version 2.0
See http://parquet.io/
