| #!/usr/bin/env bash |
| # |
| # The Pig command script |
| # |
| # Environment Variables |
| # |
| # JAVA_HOME The java implementation to use. Overrides JAVA_HOME. |
| # |
| # PIG_CLASSPATH Extra Java CLASSPATH entries. |
| # |
| # PIG_HEAPSIZE The maximum amount of heap to use, in MB. |
| # Default is 1000. |
| # |
| # PIG_OPTS Extra Java runtime options. |
| # |
| # PIG_CONF_DIR Alternate conf dir. Default is ${PIG_HOME}/conf. |
| # |
| # PIG_ROOT_LOGGER The root appender. Default is INFO,console |
| # |
| # PIG_HADOOP_VERSION Version of hadoop to run with. Default is 17 (0.17). |
| |
| cygwin=false |
| case "`uname`" in |
| CYGWIN*) cygwin=true;; |
| esac |
| debug=false |
| |
| # filter command line parameter |
| for f in $@; do |
| if [[ $f = "-secretDebugCmd" ]]; then |
| debug=true |
| else |
| remaining="${remaining} $f" |
| fi |
| done |
| |
| # resolve links - $0 may be a softlink |
| this="$0" |
| while [ -h "$this" ]; do |
| ls=`ls -ld "$this"` |
| link=`expr "$ls" : '.*-> \(.*\)$'` |
| if expr "$link" : '.*/.*' > /dev/null; then |
| this="$link" |
| else |
| this=`dirname "$this"`/"$link" |
| fi |
| done |
| |
| # convert relative path to absolute path |
| bin=`dirname "$this"` |
| script=`basename "$this"` |
| bin=`unset CDPATH; cd "$bin"; pwd` |
| this="$bin/$script" |
| |
| # the root of the Pig installation |
| export PIG_HOME=`dirname "$this"`/.. |
| |
| #check to see if the conf dir is given as an optional argument |
| if [ $# -gt 1 ] |
| then |
| if [ "--config" = "$1" ] |
| then |
| shift |
| confdir=$1 |
| shift |
| PIG_CONF_DIR=$confdir |
| fi |
| fi |
| |
| # Allow alternate conf dir location. |
| PIG_CONF_DIR="${PIG_CONF_DIR:-$PIG_HOME/conf}" |
| |
| if [ -f "${PIG_CONF_DIR}/pig-env.sh" ]; then |
| . "${PIG_CONF_DIR}/pig-env.sh" |
| fi |
| |
| # some Java parameters |
| if [ "$JAVA_HOME" != "" ]; then |
| #echo "run java in $JAVA_HOME" |
| JAVA_HOME=$JAVA_HOME |
| fi |
| |
| if [ "$JAVA_HOME" = "" ]; then |
| echo "Error: JAVA_HOME is not set." |
| exit 1 |
| fi |
| |
| JAVA=$JAVA_HOME/bin/java |
| JAVA_HEAP_MAX=-Xmx1000m |
| |
| # check envvars which might override default args |
| if [ "$PIG_HEAPSIZE" != "" ]; then |
| JAVA_HEAP_MAX="-Xmx""$PIG_HEAPSIZE""m" |
| fi |
| |
| # CLASSPATH initially contains $PIG_CONF_DIR |
| CLASSPATH="${PIG_CONF_DIR}" |
| CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar |
| |
| # for developers, add Pig classes to CLASSPATH |
| if [ -d "$PIG_HOME/build/classes" ]; then |
| CLASSPATH=${CLASSPATH}:$PIG_HOME/build/classes |
| fi |
| if [ -d "$PIG_HOME/build/test/classes" ]; then |
| CLASSPATH=${CLASSPATH}:$PIG_HOME/build/test/classes |
| fi |
| |
| # so that filenames w/ spaces are handled correctly in loops below |
| IFS= |
| |
| # for releases, add core pig to CLASSPATH |
| for f in $PIG_HOME/pig-*-core.jar; do |
| CLASSPATH=${CLASSPATH}:$f; |
| done |
| |
| # during development pig jar might be in build |
| for f in $PIG_HOME/build/pig-*-core.jar; do |
| CLASSPATH=${CLASSPATH}:$f; |
| done |
| |
| # Set the version for Hadoop, default to 17 |
| PIG_HADOOP_VERSION="${PIG_HADOOP_VERSION:-17}" |
| # add libs to CLASSPATH. There can be more than one version of the hadoop |
| # libraries in the lib dir, so don't blindly add them all. Only add the one |
| # that matche PIG_HADOOP_VERSION. |
| for f in $PIG_HOME/lib/*.jar; do |
| IS_HADOOP=`echo $f | grep hadoop` |
| if [ "${IS_HADOOP}x" == "x" ]; then |
| CLASSPATH=${CLASSPATH}:$f; |
| else |
| IS_RIGHT_VER=`echo $f | grep hadoop${PIG_HADOOP_VERSION}.jar` |
| if [ "${IS_RIGHT_VER}x" != "x" ]; then |
| CLASSPATH=${CLASSPATH}:$f; |
| fi |
| fi |
| done |
| |
| # add user-specified CLASSPATH last |
| if [ "$PIG_CLASSPATH" != "" ]; then |
| CLASSPATH=${CLASSPATH}:${PIG_CLASSPATH} |
| fi |
| |
| # default log directory & file |
| if [ "$PIG_LOG_DIR" = "" ]; then |
| PIG_LOG_DIR="$PIG_HOME/logs" |
| fi |
| if [ "$PIG_LOGFILE" = "" ]; then |
| PIG_LOGFILE='pig.log' |
| fi |
| |
| # cygwin path translation |
| if $cygwin; then |
| CLASSPATH=`cygpath -p -w "$CLASSPATH"` |
| PIG_HOME=`cygpath -d "$PIG_HOME"` |
| PIG_LOG_DIR=`cygpath -d "$PIG_LOG_DIR"` |
| fi |
| |
| # restore ordinary behaviour |
| unset IFS |
| |
| CLASS=org.apache.pig.Main |
| |
| PIG_OPTS="$PIG_OPTS -Dpig.log.dir=$PIG_LOG_DIR" |
| PIG_OPTS="$PIG_OPTS -Dpig.log.file=$PIG_LOGFILE" |
| PIG_OPTS="$PIG_OPTS -Dpig.home.dir=$PIG_HOME" |
| PIG_OPTS="$PIG_OPTS -Dpig.root.logger=${PIG_ROOT_LOGGER:-INFO,console,DRFA}" |
| |
| # run it |
| if [ "$debug" == "true" ]; then |
| echo "dry run:" |
| echo "$JAVA" $JAVA_HEAP_MAX $PIG_OPTS -classpath "$CLASSPATH" $CLASS ${remaining} |
| echo |
| else |
| exec "$JAVA" $JAVA_HEAP_MAX $PIG_OPTS -classpath "$CLASSPATH" $CLASS ${remaining} |
| fi |