Index: bin/hcat =================================================================== --- bin/hcat (revision 1312085) +++ bin/hcat (working copy) @@ -57,6 +57,46 @@ fi done +# check for hive in the path +HIVE_IN_PATH=`which hive 2>/dev/null` +if [ -f ${HIVE_IN_PATH} ]; then + #dir of hive scrip + HIVE_DIR=`dirname "$HIVE_IN_PATH"` + #one level up for base dir + HIVE_DIR=`dirname "$HIVE_DIR"` +fi + +# HIVE_HOME env variable overrides hive in the path +HIVE_HOME=${HIVE_HOME:-$HIVE_DIR} + +if [ "$HIVE_HOME" == "" ]; then + echo "Cannot find hive installation: \$HIVE_HOME must be set or hive must be in the path"; + exit 4; +fi + +if [ "$HIVE_HOME" == '/usr' ] || [ "$HIVE_HOME" == '/usr/' ]; then + #this would be a hive rpm install, bigtop rpm has HIVE_HOME dir + #structure in /usr/lib/hive. Use that if the dir structure looks good + if [ -d '/usr/lib/hive/conf' ] && [ -d '/usr/lib/hive/lib' ]; then + HIVE_HOME='/usr/lib/hive/'; + fi +fi + + + +HIVE_LIB_DIR=${HIVE_HOME}/lib +if [ ! -d "$HIVE_LIB_DIR" ]; then + echo "Cannot find lib dir within HIVE_HOME : $HIVE_LIB_DIR"; + exit 4; +fi + +HIVE_CONF_DIR=${HIVE_HOME}/conf +if [ ! -d "$HIVE_CONF_DIR" ]; then + echo "Cannot find conf dir within HIVE_HOME : $HIVE_CONF_DIR"; + exit 4; +fi + + # Find our hcatalog jar shopt -s extglob if (( `ls -1 $HCAT_PREFIX/share/hcatalog/hcatalog-[0-9]*.jar | wc -l` > 1 )) ; then @@ -65,13 +105,18 @@ fi HCAT_JAR=`ls $HCAT_PREFIX/share/hcatalog/hcatalog-[0-9]*.jar` +# Find the storage-handler jars. +for jar in ${HCAT_PREFIX}/lib/*.jar ; do + HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$jar +done + # Add all of the other jars to our classpath -for jar in $HCAT_PREFIX/share/hcatalog/lib/*.jar ; do +for jar in ${HIVE_LIB_DIR}/*.jar ; do HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$jar done -# Put our config file in the classpath -HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCAT_JAR}:${HCAT_CONF_DIR} +# Put external jars, hcat jar, and config file in the classpath +HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCAT_CLASSPATH}:${HCAT_JAR}:${HIVE_CONF_DIR} if [ -n "$HBASE_CONF_DIR" ] && [ -d $HBASE_CONF_DIR ]; then HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HBASE_CONF_DIR}