Skip to content

Commit 5400793

Browse files
Merge pull request apache#98 from shivaram/windows-fixes-build
[SPARKR-113] Build scripts for Windows
2 parents 36d61a7 + 79aee73 commit 5400793

File tree

4 files changed

+67
-3
lines changed

4 files changed

+67
-3
lines changed

BUILDING.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## Building SparkR on Windows
2+
3+
To build SparkR on Windows, the following steps are required
4+
5+
1. Install R (>= 3.1) and [Rtools](http://cran.r-project.org/bin/windows/Rtools/). Make sure to
6+
include Rtools and R in `PATH`.
7+
2. Install
8+
[JDK7](http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html) and set
9+
`JAVA_HOME` in the system environment variables.
10+
3. Install `rJava` using `install.packages(rJava)`. If rJava fails to load due to missing jvm.dll,
11+
you will need to add the directory containing jvm.dll to `PATH`. See this [stackoverflow post](http://stackoverflow.com/a/7604469]
12+
for more details.
13+
4. Download and install [Maven](http://maven.apache.org/download.html). Also include the `bin`
14+
directory in Maven in `PATH`.
15+
5. Get SparkR source code either using [`git]`(http://git-scm.com/downloads) or by downloading a
16+
source zip from github.
17+
6. Open a command shell (`cmd`) in the SparkR directory and run `install-dev.bat`

install-dev.bat

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@echo off
2+
3+
rem Install development version of SparkR
4+
rem
5+
6+
MKDIR .\lib
7+
8+
R.exe CMD INSTALL --library=".\lib" pkg\

pkg/R/sparkR.R

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ assemblyJarName <- "sparkr-assembly-0.1.jar"
44

55
sparkR.onLoad <- function(libname, pkgname) {
66
assemblyJarPath <- paste(libname, "/SparkR/", assemblyJarName, sep="")
7+
assemblyJarPath <- gsub(" ", "\\ ", assemblyJarPath, fixed=T)
78
packageStartupMessage("[SparkR] Initializing with classpath ", assemblyJarPath, "\n")
89

910
sparkMem <- Sys.getenv("SPARK_MEM", "512m")
@@ -67,16 +68,19 @@ sparkR.init <- function(
6768
}
6869

6970
.jaddClassPath(sparkJars)
70-
jars=c(as.character(.sparkREnv$assemblyJarPath), as.character(sparkJars))
71-
71+
jars <- c(as.character(.sparkREnv$assemblyJarPath), as.character(sparkJars))
72+
73+
nonEmptyJars <- Filter(function(x) { x != "" }, jars)
74+
localJarPaths <- sapply(nonEmptyJars, function(j) { paste("file://", j, sep="") })
75+
7276
assign(
7377
".sparkRjsc",
7478
J("edu.berkeley.cs.amplab.sparkr.RRDD",
7579
"createSparkContext",
7680
master,
7781
appName,
7882
as.character(sparkHome),
79-
.jarray(jars, "java/lang/String"),
83+
.jarray(localJarPaths, "java/lang/String"),
8084
sparkEnvirMap,
8185
sparkExecutorEnvMap),
8286
envir=.sparkREnv

pkg/src/Makefile.win

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
SCALA_VERSION := 2.10
2+
SPARKR_VERSION := 0.1
3+
JAR_NAME := sparkr-assembly-$(SPARKR_VERSION).jar
4+
SBT_TARGET_NAME := target/scala-$(SCALA_VERSION)/$(JAR_NAME)
5+
6+
MAVEN_JAR_NAME := sparkr-$(SPARKR_VERSION)-assembly.jar
7+
MAVEN_TARGET_NAME := target/$(MAVEN_JAR_NAME)
8+
9+
SCALA_SOURCE_DIR := src/main/scala/edu/berkeley/cs/amplab/sparkr
10+
RESOURCE_DIR := src/main/resources
11+
12+
SCALA_FILES := $(wildcard $(SCALA_SOURCE_DIR)/*.scala)
13+
RESOURCE_FILES := $(wildcard $(RESOURCE_DIR)/*)
14+
15+
SPARK_VERSION ?= 1.1.0
16+
SPARK_HADOOP_VERSION ?= 1.0.4
17+
SPARK_YARN_VERSION ?= 2.4.0
18+
19+
TARGET_NAME := $(MAVEN_TARGET_NAME)
20+
21+
all: $(TARGET_NAME)
22+
23+
$(MAVEN_TARGET_NAME): $(SCALA_FILES) $(RESOURCE_FILES)
24+
mvn.bat -Dhadoop.version=$(SPARK_HADOOP_VERSION) -Dspark.version=$(SPARK_VERSION) -Dyarn.version=$(SPARK_YARN_VERSION) -DskipTests clean package shade:shade
25+
cp -f $(MAVEN_TARGET_NAME) ../inst/$(JAR_NAME)
26+
27+
clean:
28+
mvn.bat clean
29+
rm -rf target
30+
rm -rf project/target
31+
rm -rf project/project
32+
-rm sbt/sbt-launch-*.jar
33+
rm -f ../inst/$(JAR_NAME)
34+
35+
.PHONY: all clean

0 commit comments

Comments
 (0)