KYLIN-2526 improve find-hive-dependency.sh
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/d69cc278 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/d69cc278 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/d69cc278 Branch: refs/heads/master-hadoop3.0 Commit: d69cc2780d6849ff04d36e24882b932b22f6cc67 Parents: abb73ff Author: Cheng Wang <[email protected]> Authored: Wed Apr 12 11:39:21 2017 +0800 Committer: liyang-gmt8 <[email protected]> Committed: Wed Apr 12 11:51:31 2017 +0800 ---------------------------------------------------------------------- build/bin/find-hive-dependency.sh | 51 +++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/d69cc278/build/bin/find-hive-dependency.sh ---------------------------------------------------------------------- diff --git a/build/bin/find-hive-dependency.sh b/build/bin/find-hive-dependency.sh index aa39da0..02a47ef 100644 --- a/build/bin/find-hive-dependency.sh +++ b/build/bin/find-hive-dependency.sh @@ -98,8 +98,57 @@ then quit "hcatalog lib not found" fi +function checkFileExist() +{ + files=$1 + misFiles=0 + outputMissFiles= + for file in ${files//:/ } + do + let allFiles++ + if [ ! -f "${file}" ]; then + outputMissFiles=${outputMissFiles}${file}", " + let misFiles++ + fi + done + ratio=`echo "scale=3; ${misFiles}/${allFiles}" | bc` + [[ `echo "$ratio < 0.01" | bc ` -eq 1 ]] || quit "A couple of hive jars can't be found: ${outputMisFiles}!" +} + +function validateDirectory() +{ + conf_path=$1 + [[ -d "${conf_path}" ]] || quit "${conf_path} doesn't exist!" + unit=${conf_path: -1} + [[ "${unit}" == "/" ]] || conf_path=${conf_path}"/" + + find="false" + filelist=`ls ${conf_path}` + for file in $filelist + do + if [ "${file}" == "hive-site.xml" ] + then + find="true" + break + fi + done + [[ "${find}" == "true" ]] || quit "ERROR, no hive-site.xml found under dir: ${conf_path}!" +} + +if [ -z "$HIVE_LIB" ] +then + verbose "HIVE_LIB is not set, try to retrieve hive lib from hive_exec_path" + hive_lib_dir="$(dirname $hive_exec_path)" +else + hive_lib_dir="$HIVE_LIB" +fi +hive_lib=`find -L ${hive_lib_dir} -name '*.jar' ! -name '*calcite*' -printf '%p:' | sed 's/:$//'` + +validateDirectory ${hive_conf_path} +checkFileExist ${hive_lib} +checkFileExist ${hcatalog} -hive_lib=`find -L "$(dirname $hive_exec_path)" -name '*.jar' ! -name '*calcite*' -printf '%p:' | sed 's/:$//'` hive_dependency=${hive_conf_path}:${hive_lib}:${hcatalog} verbose "hive dependency: $hive_dependency" export hive_dependency +
