2012-09-24 18:43:19 -04:00
|
|
|
@echo off
|
|
|
|
|
2013-07-16 20:21:33 -04:00
|
|
|
rem
|
|
|
|
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.
|
|
|
|
rem
|
|
|
|
|
2012-09-24 18:43:19 -04:00
|
|
|
rem Figure out where the Spark framework is installed
|
[SPARK-22495] Fix setup of SPARK_HOME variable on Windows
## What changes were proposed in this pull request?
Fixing the way how `SPARK_HOME` is resolved on Windows. While the previous version was working with the built release download, the set of directories changed slightly for the PySpark `pip` or `conda` install. This has been reflected in Linux files in `bin` but not for Windows `cmd` files.
First fix improves the way how the `jars` directory is found, as this was stoping Windows version of `pip/conda` install from working; JARs were not found by on Session/Context setup.
Second fix is adding `find-spark-home.cmd` script, which uses `find_spark_home.py` script, as the Linux version, to resolve `SPARK_HOME`. It is based on `find-spark-home` bash script, though, some operations are done in different order due to the `cmd` script language limitations. If environment variable is set, the Python script `find_spark_home.py` will not be run. The process can fail if Python is not installed, but it will mostly use this way if PySpark is installed via `pip/conda`, thus, there is some Python in the system.
## How was this patch tested?
Tested on local installation.
Author: Jakub Nowacki <j.s.nowacki@gmail.com>
Closes #19370 from jsnowacki/fix_spark_cmds.
2017-11-22 22:47:38 -05:00
|
|
|
call "%~dp0find-spark-home.cmd"
|
2012-09-24 18:43:19 -04:00
|
|
|
|
2016-02-10 04:54:22 -05:00
|
|
|
call "%SPARK_HOME%\bin\load-spark-env.cmd"
|
2012-09-24 18:43:19 -04:00
|
|
|
|
2013-02-07 00:56:00 -05:00
|
|
|
rem Test that an argument was given
|
2015-03-11 04:03:01 -04:00
|
|
|
if "x%1"=="x" (
|
2013-09-01 19:45:57 -04:00
|
|
|
echo Usage: spark-class ^<class^> [^<args^>]
|
2015-03-11 04:03:01 -04:00
|
|
|
exit /b 1
|
2014-03-09 14:08:39 -04:00
|
|
|
)
|
|
|
|
|
2016-03-14 14:13:26 -04:00
|
|
|
rem Find Spark jars.
|
2017-09-23 08:04:10 -04:00
|
|
|
if exist "%SPARK_HOME%\jars" (
|
2016-04-04 19:52:21 -04:00
|
|
|
set SPARK_JARS_DIR="%SPARK_HOME%\jars"
|
2015-03-29 07:40:37 -04:00
|
|
|
) else (
|
2016-04-04 19:52:21 -04:00
|
|
|
set SPARK_JARS_DIR="%SPARK_HOME%\assembly\target\scala-%SPARK_SCALA_VERSION%\jars"
|
2014-03-09 14:08:39 -04:00
|
|
|
)
|
2012-09-24 18:43:19 -04:00
|
|
|
|
2016-03-14 14:13:26 -04:00
|
|
|
if not exist "%SPARK_JARS_DIR%"\ (
|
2016-04-14 21:51:43 -04:00
|
|
|
echo Failed to find Spark jars directory.
|
2015-03-11 04:03:01 -04:00
|
|
|
echo You need to build Spark before running this program.
|
|
|
|
exit /b 1
|
2013-11-09 16:37:11 -05:00
|
|
|
)
|
|
|
|
|
2016-03-14 14:13:26 -04:00
|
|
|
set LAUNCH_CLASSPATH=%SPARK_JARS_DIR%\*
|
2015-04-14 21:51:39 -04:00
|
|
|
|
|
|
|
rem Add the launcher build dir to the classpath if requested.
|
|
|
|
if not "x%SPARK_PREPEND_CLASSES%"=="x" (
|
2016-02-10 04:54:22 -05:00
|
|
|
set LAUNCH_CLASSPATH="%SPARK_HOME%\launcher\target\scala-%SPARK_SCALA_VERSION%\classes;%LAUNCH_CLASSPATH%"
|
2015-04-14 21:51:39 -04:00
|
|
|
)
|
|
|
|
|
2013-09-01 19:45:57 -04:00
|
|
|
rem Figure out where java is.
|
|
|
|
set RUNNER=java
|
2017-03-21 17:24:41 -04:00
|
|
|
if not "x%JAVA_HOME%"=="x" (
|
2017-05-05 11:30:42 -04:00
|
|
|
set RUNNER=%JAVA_HOME%\bin\java
|
2017-03-21 17:24:41 -04:00
|
|
|
) else (
|
|
|
|
where /q "%RUNNER%"
|
|
|
|
if ERRORLEVEL 1 (
|
|
|
|
echo Java not found and JAVA_HOME environment variable is not set.
|
|
|
|
echo Install Java and set JAVA_HOME to point to the Java installation directory.
|
|
|
|
exit /b 1
|
|
|
|
)
|
|
|
|
)
|
2012-09-24 18:43:19 -04:00
|
|
|
|
2015-03-11 04:03:01 -04:00
|
|
|
rem The launcher library prints the command to be executed in a single line suitable for being
|
|
|
|
rem executed by the batch interpreter. So read all the output of the launcher into a variable.
|
2015-04-28 07:55:21 -04:00
|
|
|
set LAUNCHER_OUTPUT=%temp%\spark-class-launcher-output-%RANDOM%.txt
|
2016-05-27 14:28:28 -04:00
|
|
|
"%RUNNER%" -Xmx128m -cp "%LAUNCH_CLASSPATH%" org.apache.spark.launcher.Main %* > %LAUNCHER_OUTPUT%
|
2015-04-28 07:55:21 -04:00
|
|
|
for /f "tokens=*" %%i in (%LAUNCHER_OUTPUT%) do (
|
2015-03-11 04:03:01 -04:00
|
|
|
set SPARK_CMD=%%i
|
2014-08-27 01:52:16 -04:00
|
|
|
)
|
2015-04-28 07:55:21 -04:00
|
|
|
del %LAUNCHER_OUTPUT%
|
2015-03-11 04:03:01 -04:00
|
|
|
%SPARK_CMD%
|