You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/11/19 21:44:21 UTC

svn commit: r1543567 - /hive/trunk/bin/hive

Author: hashutosh
Date: Tue Nov 19 20:44:21 2013
New Revision: 1543567

URL: http://svn.apache.org/r1543567
Log:
HIVE-2055 : Hive should add HBase classpath dependencies when available (Nick Dimiduk via Ashutosh Chauhan)

Modified:
    hive/trunk/bin/hive

Modified: hive/trunk/bin/hive
URL: http://svn.apache.org/viewvc/hive/trunk/bin/hive?rev=1543567&r1=1543566&r2=1543567&view=diff
==============================================================================
--- hive/trunk/bin/hive (original)
+++ hive/trunk/bin/hive Tue Nov 19 20:44:21 2013
@@ -196,6 +196,39 @@ if [ "$hadoop_major_ver" -lt "1" -a  "$h
     exit 6
 fi
 
+# HBase detection. Need bin/hbase and a conf dir for building classpath entries.
+# Start with BigTop defaults for HBASE_HOME and HBASE_CONF_DIR.
+HBASE_HOME=${HBASE_HOME:-"/usr/lib/hbase"}
+HBASE_CONF_DIR=${HBASE_CONF_DIR:-"/etc/hbase/conf"}
+if [[ ! -d $HBASE_CONF_DIR ]] ; then
+  # not explicitly set, nor in BigTop location. Try looking in HBASE_HOME.
+  HBASE_CONF_DIR="$HBASE_HOME/conf"
+fi
+
+# perhaps we've located the HBase config. if so, include it on classpath.
+if [[ -d $HBASE_CONF_DIR ]] ; then
+  export HADOOP_CLASSPATH="${HADOOP_CLASSPATH}:${HBASE_CONF_DIR}"
+fi
+
+# look for the hbase script. First check HBASE_HOME and then ask PATH.
+if [[ -e $HBASE_HOME/bin/hbase ]] ; then
+  HBASE_BIN="$HBASE_HOME/bin/hbase"
+fi
+HBASE_BIN=${HBASE_BIN:-"$(which hbase 2>/dev/null)"}
+
+# perhaps we've located HBase. If so, include its details on the classpath
+if [[ -n $HBASE_BIN ]] ; then
+  # exclude ZK, PB, and Guava (See HIVE-2055)
+  # depends on HBASE-8438 (hbase-0.94.14+, hbase-0.96.1+) for `hbase mapredcp` command
+  for x in $($HBASE_BIN mapredcp 2>/dev/null | tr ':' '\n') ; do
+    if [[ $x == *zookeeper* || $x == *protobuf-java* || $x == *guava* ]] ; then
+      continue
+    fi
+    # TODO: should these should be added to AUX_PARAM as well?
+    export HADOOP_CLASSPATH="${HADOOP_CLASSPATH}:${x}"
+  done
+fi
+
 if [ "${AUX_PARAM}" != "" ]; then
   HIVE_OPTS="$HIVE_OPTS -hiveconf hive.aux.jars.path=${AUX_PARAM}"
   AUX_JARS_CMD_LINE="-libjars ${AUX_PARAM}"