diff --git a/bin/ext/beeline.sh b/bin/ext/beeline.sh index e61897e4cb67..a8717fa5efaa 100644 --- a/bin/ext/beeline.sh +++ b/bin/ext/beeline.sh @@ -32,11 +32,35 @@ beeline () { export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Dlog4j.configurationFile=beeline-log4j2.properties --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens java.base/java.util.regex=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED " if [ "$EXECUTE_WITH_JAVA" != "true" ] ; then + if [ "$BEELINE_USE_HADOOP_JAR" == "true" ] ; then + if [ -z $CLIUSER ] ; then + exec $HADOOP jar ${beelineJarPath} $CLASS $HIVE_OPTS "$@" + else + exec $HADOOP jar ${beelineJarPath} $CLASS $HIVE_OPTS "$@" -n "${CLIUSER}" -p "${CLIUSER}" + fi + fi + beelineClasspath="${HADOOP_CLASSPATH}" + for x in $(${HADOOP} classpath --glob 2>/dev/null | tr ':' '\n') ; do + case "$x" in + *slf4j-reload4j*|*slf4j-log4j12*|*log4j-1.2*|*reload4j*) continue ;; + esac + beelineClasspath="${beelineClasspath}:${x}" + done + # JAVAEXE is only set by bin/hive on the no-Hadoop fallback path, so resolve + # the java binary here for the common case where HADOOP_HOME is present. + beelineJava="${JAVAEXE}" + if [ -z "$beelineJava" ] ; then + if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ] ; then + beelineJava="$JAVA_HOME/bin/java" + else + beelineJava="java" + fi + fi # if CLIUSER is not empty, then pass it as user id / password during beeline redirect if [ -z $CLIUSER ] ; then - exec $HADOOP jar ${beelineJarPath} $CLASS $HIVE_OPTS "$@" + exec "$beelineJava" $HADOOP_CLIENT_OPTS -cp "${beelineClasspath}" $CLASS $HIVE_OPTS "$@" else - exec $HADOOP jar ${beelineJarPath} $CLASS $HIVE_OPTS "$@" -n "${CLIUSER}" -p "${CLIUSER}" + exec "$beelineJava" $HADOOP_CLIENT_OPTS -cp "${beelineClasspath}" $CLASS $HIVE_OPTS "$@" -n "${CLIUSER}" -p "${CLIUSER}" fi else # if CLIUSER is not empty, then pass it as user id / password during beeline redirect