3.1. Project Setup¶
Renjin is a essentially a Java library that allows you to evaluate scripts written in the R language. This library must be added as dependency to your project.
3.1.1. Maven¶
For projects organized with Apache Maven, you can simply add Renjin’s Script Engine as dependency to your project:
<dependencies> <dependency> <groupId>org.renjin</groupId> <artifactId>renjin-script-engine</artifactId> <version>3.5-beta76</version> </dependency> </dependencies>
where
For this to work you will also need to add BeDataDriven’s public repository to your pom.xml
:
<repositories>
<repository>
<id>bedatadriven</id>
<name>bedatadriven public repo</name>
<url>https://nexus.bedatadriven.com/content/groups/public/</url>
</repository>
</repositories>
You can use RELEASE
instead of “3.5-beta76” in the project file to use the
very latest versions of the Renjin components.
3.1.2. Gradle¶
For projects organized with Gradle, add the following to your build.gradle
file:
repositories { maven { url "https://nexus.bedatadriven.com/content/groups/public" } } dependencies { compile "org.renjin:renjin-script-engine:3.5-beta76"; }
See the renjin-gradle-example on GitHub for a complete example.
3.1.3. Scala Build Tool (SBT)¶
The following is an example of build.sbt
that includes
Renjin’s Script Engine:
// IMPORTANT: sbt may fail if http*s* is not used. resolvers += "BeDataDriven" at "https://nexus.bedatadriven.com/content/groups/public" // Workaround for buggy http handler in SBT 1.x // https://github.com/sbt/sbt/issues/3570 // Do not include for SBT 0.13.x or earlier updateOptions := updateOptions.value.withGigahorse(false) lazy val root = (project in file(".")). settings( name := "renjin-test", version := "1.0", scalaVersion := "2.10.6", libraryDependencies += "org.renjin" % "renjin-script-engine" % "3.5-beta76" )
See the renjin-sbt-example on GitHub for a complete example.
3.1.4. Eclipse¶
We recommend using a build tool to organize your project. As soon as you begin using non-trivial R packages, it will become increasingly difficult to manage dependencies (and the dependencies of those dependencies) through a point-and-click interface.
If this isn’t possible for whatever reason, you can download a single JAR file called:
renjin-script-engine-3.5-beta76-jar-with-dependencies.jar
from the Renjin website and manually add this as a dependency in Eclipse.
See the eclipse-dynamic-web-project example project for more details.
3.1.5. JBoss¶
There have been reports of difficulty loading Renjin within JBoss without
a specific module.xml
file:
<module xmlns="urn:jboss:module:1.1" name="org.renjin"> <resources> <resource-root path="renjin-script-engine-3.5-beta76-jar-with-dependencies.jar"/> </resources> <dependencies> <module name="javax.api"/> </dependencies> </module>
3.1.6. Spark¶
The spark-submit command line tool requires you to explicitly specify the dependencies of your Spark Job. In order to avoid specifying all of Renjin’s dependencies, as well as those of CRAN, and BioConductor packages, or your own internal packages, you can still use Maven (or Gradle or SBT) to automatically resolve your dependencies and build a single JAR that you can pass as an argument to spark-submit or dse spark-submit.
<dependencies> <dependency> <groupId>com.datastax.dse</groupId> <artifactId>dse-spark-dependencies</artifactId> <version>5.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.renjin</groupId> <artifactId>renjin-script-engine</artifactId> <version>3.5-beta76</version> </dependency> <dependency> <groupId>org.renjin.cran</groupId> <artifactId>randomForest</artifactId> <version>4.6-12-b34</version> </dependency> </dependencies> <build> <!--- Assembly plugin to build single jar --> </build> <repositories> <!-- Renjin and Spark/DataStax repositories --> </repositories>
See the renjin-spark-executor project or the datastax/SparkBuildExamples repository from DataStax for complete examples.
You can then submit your job as follows:
mvn clean package
spark-submit --class org.renjin.ExampleJob target/renjin-example-0.1-dep.jar