aboutsummaryrefslogtreecommitdiff
path: root/bin/spark-sql
diff options
context:
space:
mode:
Diffstat (limited to 'bin/spark-sql')
-rwxr-xr-xbin/spark-sql66
1 files changed, 62 insertions, 4 deletions
diff --git a/bin/spark-sql b/bin/spark-sql
index bba7f897b1..61ebd8ab6d 100755
--- a/bin/spark-sql
+++ b/bin/spark-sql
@@ -23,14 +23,72 @@
# Enter posix mode for bash
set -o posix
+CLASS="org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver"
+
# Figure out where Spark is installed
FWDIR="$(cd `dirname $0`/..; pwd)"
-if [[ "$@" = *--help ]] || [[ "$@" = *-h ]]; then
- echo "Usage: ./sbin/spark-sql [options]"
+function usage {
+ echo "Usage: ./sbin/spark-sql [options] [cli option]"
+ pattern="usage"
+ pattern+="\|Spark assembly has been built with Hive"
+ pattern+="\|NOTE: SPARK_PREPEND_CLASSES is set"
+ pattern+="\|Spark Command: "
+ pattern+="\|--help"
+ pattern+="\|======="
+
$FWDIR/bin/spark-submit --help 2>&1 | grep -v Usage 1>&2
+ echo
+ echo "CLI options:"
+ $FWDIR/bin/spark-class $CLASS --help 2>&1 | grep -v "$pattern" 1>&2
+}
+
+function ensure_arg_number {
+ arg_number=$1
+ at_least=$2
+
+ if [[ $arg_number -lt $at_least ]]; then
+ usage
+ exit 1
+ fi
+}
+
+if [[ "$@" = --help ]] || [[ "$@" = -h ]]; then
+ usage
exit 0
fi
-CLASS="org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver"
-exec "$FWDIR"/bin/spark-submit --class $CLASS spark-internal $@
+CLI_ARGS=()
+SUBMISSION_ARGS=()
+
+while (($#)); do
+ case $1 in
+ -d | --define | --database | -f | -h | --hiveconf | --hivevar | -i | -p)
+ ensure_arg_number $# 2
+ CLI_ARGS+=($1); shift
+ CLI_ARGS+=($1); shift
+ ;;
+
+ -e)
+ ensure_arg_number $# 2
+ CLI_ARGS+=($1); shift
+ CLI_ARGS+=(\"$1\"); shift
+ ;;
+
+ -s | --silent)
+ CLI_ARGS+=($1); shift
+ ;;
+
+ -v | --verbose)
+ # Both SparkSubmit and SparkSQLCLIDriver recognizes -v | --verbose
+ CLI_ARGS+=($1)
+ SUBMISSION_ARGS+=($1); shift
+ ;;
+
+ *)
+ SUBMISSION_ARGS+=($1); shift
+ ;;
+ esac
+done
+
+eval exec "$FWDIR"/bin/spark-submit --class $CLASS ${SUBMISSION_ARGS[*]} spark-internal ${CLI_ARGS[*]}