| @echo off |
| @rem Licensed to the Apache Software Foundation (ASF) under one or more |
| @rem contributor license agreements. See the NOTICE file distributed with |
| @rem this work for additional information regarding copyright ownership. |
| @rem The ASF licenses this file to You under the Apache License, Version 2.0 |
| @rem (the "License"); you may not use this file except in compliance with |
| @rem the License. You may obtain a copy of the License at |
| @rem |
| @rem http://www.apache.org/licenses/LICENSE-2.0 |
| @rem |
| @rem Unless required by applicable law or agreed to in writing, software |
| @rem distributed under the License is distributed on an "AS IS" BASIS, |
| @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| @rem See the License for the specific language governing permissions and |
| @rem limitations under the License. |
| SetLocal EnableDelayedExpansion |
| |
| @rem Set the path |
| |
| if not defined HIVE_BIN_PATH ( |
| set HIVE_BIN_PATH=%~dp0 |
| ) |
| |
| if "%HIVE_BIN_PATH:~-1%" == "\" ( |
| set HIVE_BIN_PATH=%HIVE_BIN_PATH:~0,-1% |
| ) |
| |
| set HIVE_CONFIG_SCRIPT=%HIVE_BIN_PATH%\hive-config.cmd |
| |
| if exist %HIVE_CONFIG_SCRIPT% ( |
| CALL %HIVE_CONFIG_SCRIPT% %* |
| ) |
| |
| set SERVICE= |
| set HELP= |
| set CATSERVICE= |
| set DEBUG= |
| set CURRENTARG= |
| set HIVEARGS= |
| rem set AUX_CLASSPATH= |
| set AUX_PARAM= |
| |
| @rem parse the command line arguments |
| :ProcessCmdLine |
| if [%1]==[] goto :FinishArgs |
| |
| set temp=%1 |
| set temp=%temp:~0, 7% |
| |
| if %temp%==--debug ( |
| set DEBUG=%* |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| if %1==--config ( |
| shift |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| if %1==--auxpath ( |
| shift |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| if %1==--service ( |
| set SERVICE=%2 |
| |
| if [%3]==[catservicexml] ( |
| set CATSERVICE=_catservice |
| shift |
| ) |
| shift |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| if %1==--rcfilecat ( |
| set SERVICE=rcfilecat |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| if %1==--orcfiledump ( |
| set SERVICE=orcfiledump |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| if %1==--help ( |
| set HELP=_help |
| shift |
| goto :ProcessCmdLine |
| ) |
| |
| @rem parameter at %1 does not match any option, these are optional params |
| goto :FinishArgs |
| :FinishArgs |
| |
| if defined DEBUG ( |
| if defined HELP ( |
| call %HIVE_BIN_PATH%\ext\debug.cmd HELP |
| goto :EOF |
| ) |
| |
| call %HIVE_BIN_PATH%\ext\debug.cmd %DEBUG% |
| ) |
| |
| if defined HIVE_MAIN_CLIENT_DEBUG_OPTS ( |
| set HADOOP_OPTS=%HADOOP_OPTS% %HADOOP_CLIENT_OPTS% %HIVE_MAIN_CLIENT_DEBUG_OPTS% |
| ) |
| |
| if not [%1]==[] ( |
| set CURRENTARG=%1 |
| call :MakeHiveArgs %* |
| ) |
| |
| if not defined SERVICE ( |
| if defined HELP ( |
| set SERVICE=help |
| ) else ( |
| set SERVICE=cli |
| ) |
| ) |
| |
| if not defined HIVE_HOME ( |
| echo "HIVE_HOME needs to be defined to point at the root of the hive install" |
| exit /b 1 |
| ) |
| |
| if not defined HIVE_CONF_DIR ( |
| set HIVE_CONF_DIR=%HIVE_HOME%\conf |
| ) |
| |
| if exist %HIVE_CONF_DIR%/hive-env.cmd CALL %HIVE_CONF_DIR%/hive-env.cmd |
| |
| @rem sort out classpath and make sure dependencies exist |
| set CLASSPATH=%HIVE_CONF_DIR% |
| |
| set HIVE_LIB=%HIVE_HOME%\lib |
| |
| @rem needed for execution |
| if not exist %HIVE_LIB%\hive-exec-*.jar ( |
| echo "Missing Hive Execution Jar: %HIVE_LIB%/hive-exec-*.jar" |
| exit /b 1 |
| ) |
| |
| if not exist %HIVE_LIB%\hive-metastore-*.jar ( |
| echo "Missing Hive MetaStore Jar" |
| exit /b 1 |
| ) |
| |
| @rem cli specific code |
| if not exist %HIVE_LIB%\hive-cli-*.jar ( |
| echo "Missing Hive CLI Jar" |
| exit /b 1 |
| ) |
| |
| set CLASSPATH=%CLASSPATH%;%HIVE_LIB%\*;%HIVE_HOME%\hcatalog\share\hcatalog\*; |
| |
| @rem maybe we should just make users set HADOOP_HOME env variable as a prereq |
| @rem in the next iteration, use "where" command to find directory of hadoop install from path |
| if not defined HADOOP_HOME ( |
| echo "HADOOP_HOME needs to be defined to point at the hadoop installation" |
| exit /b 1 |
| ) |
| |
| @rem supress the HADOOP_HOME warnings in 1.x.x |
| set HADOOP_HOME_WARN_SUPPRESS=true |
| |
| set HADOOP=%HADOOP_HOME%\bin\hadoop.cmd |
| if not exist %HADOOP% ( |
| echo "Missing hadoop installation: %HADOOP_HOME% must be set" |
| exit /b 1 |
| ) |
| |
| @rem can only run against hadoop 1.0.0 as prereq for this iteration - can't figure out the regex/awk script to determine compatibility |
| |
| @rem add auxilary jars such as serdes |
| if not defined HIVE_AUX_JARS_PATH goto :AddAuxLibDir |
| |
| setLocal EnableDelayedExpansion |
| :auxJarLoop |
| for /f "delims=," %%a in ("!HIVE_AUX_JARS_PATH!") do ( |
| set auxjar=%%a |
| if exist %%a ( |
| if exist "%%a\nul" ( |
| @rem %%a is a dir |
| pushd %%a |
| for /f %%b IN ('dir /b *.jar') do ( |
| set AUX_CLASSPATH=!AUX_CLASSPATH!;%%a\%%b |
| call :AddToAuxParam %%a\%%b |
| ) |
| popd |
| ) else ( |
| @rem %%a is a file |
| set AUX_CLASSPATH=!AUX_CLASSPATH!;%%a |
| call :AddToAuxParam %%a |
| ) |
| ) |
| ) |
| :striploop |
| set stripchar=!HIVE_AUX_JARS_PATH:~0,1! |
| set HIVE_AUX_JARS_PATH=!HIVE_AUX_JARS_PATH:~1! |
| if "!HIVE_AUX_JARS_PATH!" EQU "" goto auxJarLoopEnd |
| if "!stripchar!" NEQ "," goto striploop |
| goto auxJarLoop |
| |
| :auxJarLoopEnd |
| |
| if defined HIVE_AUX_JARS_PATH ( |
| echo "setting aux param %HIVE_AUX_JARS_PATH%" |
| set AUX_CLASSPATH=%HIVE_AUX_JARS_PATH% |
| set AUX_PARAM=file://%HIVE_AUX_JARS_PATH% |
| ) |
| |
| |
| :AddAuxLibDir |
| @rem adding jars from auxlib directory |
| if exist %HIVE_HOME%\auxlib ( |
| pushd %HIVE_HOME%\auxlib |
| for /f %%a IN ('dir /b *.jar') do ( |
| set AUX_CLASSPATH=%AUX_CLASSPATH%;%%a |
| call :AddToAuxParam %%a |
| ) |
| popd |
| ) |
| |
| @rem pass classpath to hadoop |
| set HADOOP_CLASSPATH=%HADOOP_CLASSPATH%;%CLASSPATH%;%AUX_CLASSPATH% |
| |
| @rem also pass hive classpath to hadoop |
| if defined HIVE_CLASSPATH ( |
| set HADOOP_CLASSPATH=%HADOOP_CLASSPATH%;%HIVE_CLASSPATH% |
| ) |
| |
| @rem set hbase components |
| if defined HBASE_HOME ( |
| if not defined HBASE_CONF_DIR ( |
| if exist %HBASE_HOME%\conf ( |
| set HBASE_CONF_DIR=%HBASE_HOME%\conf |
| ) |
| ) |
| if defined HBASE_CONF_DIR ( |
| call :AddToHadoopClassPath %HBASE_CONF_DIR% |
| ) |
| if exist %HBASE_HOME%\lib ( |
| call :AddToHadoopClassPath %HBASE_HOME%\lib\* |
| ) |
| ) |
| |
| if defined AUX_PARAM ( |
| set HIVE_OPTS=%HIVE_OPTS% -hiveconf hive.aux.jars.path="%AUX_PARAM%" |
| set AUX_JARS_CMD_LINE="-libjars %AUX_PARAM%" |
| ) |
| |
| @rem Get ready to run the services |
| set SERVICE_COUNT=0 |
| set TORUN="" |
| call :AddServices |
| For /L %%i in (1,1,%SERVICE_COUNT%) do ( |
| if "%SERVICE%" == "!VAR%%i!" ( |
| set TORUN=!VAR%%i! |
| ) |
| ) |
| |
| if %TORUN% == "" ( |
| echo "Service %SERVICE% not available" |
| exit /b 1 |
| ) |
| |
| |
| if defined HELP ( |
| call %HIVE_BIN_PATH%\ext\%TORUN%.cmd %TORUN%%HELP% %* |
| goto :EOF |
| ) |
| |
| @rem generate xml for the service, also append hadoop dependencies to the classpath |
| if defined CATSERVICE ( |
| if exist %HADOOP_HOME%\libexec\hadoop-config.cmd ( |
| call %HADOOP_HOME%\libexec\hadoop-config.cmd |
| ) else ( |
| call %HADOOP_HOME%\libexec\hadoop-config.cmd |
| ) |
| call %HIVE_BIN_PATH%\ext\%TORUN%.cmd %TORUN%%CATSERVICE% %* |
| goto :EOF |
| ) |
| |
| call %HIVE_BIN_PATH%\ext\%TORUN%.cmd %TORUN% %* |
| |
| |
| |
| goto :EOF |
| @rem done body of script |
| |
| |
| @rem start utility functions here |
| |
| @rem strip off preceding arguments like --service so that subsequent args can be passed on |
| :MakeHiveArgs |
| set _count=0 |
| set _shift=1 |
| set HIVEARGS= |
| |
| if not defined CURRENTARG ( |
| goto :EndLoop |
| ) |
| :HiveArgsLoop |
| if [%1]==[] ( |
| goto :EndLoop |
| ) |
| if not %1==%CURRENTARG% ( |
| shift |
| goto :HiveArgsLoop |
| ) |
| |
| if not defined HIVEARGS ( |
| set HIVEARGS=%1 |
| ) else ( |
| set HIVEARGS=%HIVEARGS% %1 |
| ) |
| shift |
| set CURRENTARG=%1 |
| goto :HiveArgsLoop |
| :EndLoop |
| goto :EOF |
| |
| @rem makes list of available services |
| :AddServices |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=cli |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=help |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=hiveserver |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=hiveserver2 |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=hwi |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=jar |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=lineage |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=metastore |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=rcfilecat |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=orcfiledump |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=schematool |
| |
| set /a SERVICE_COUNT = %SERVICE_COUNT% + 1 |
| set VAR%SERVICE_COUNT%=cleardanglingscratchdir |
| goto :EOF |
| |
| :AddToAuxParam |
| if not defined AUX_PARAM ( |
| set AUX_PARAM=file:///%1 |
| ) else ( |
| set AUX_PARAM=%AUX_PARAM%,file:///%1 |
| ) |
| ) |
| goto :EOF |
| |
| :AddToHadoopClassPath |
| if defined HADOOP_CLASSPATH ( |
| set HADOOP_CLASSPATH=%HADOOP_CLASSPATH%;%1 |
| ) else ( |
| set HADOOP_CLASSPATH=%1 |
| ) |
| ) |
| goto :EOF |