aboutsummaryrefslogtreecommitdiff
path: root/R/pkg/R/context.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/pkg/R/context.R')
-rw-r--r--R/pkg/R/context.R16
1 files changed, 14 insertions, 2 deletions
diff --git a/R/pkg/R/context.R b/R/pkg/R/context.R
index 1ca573e5bd..50856e3d98 100644
--- a/R/pkg/R/context.R
+++ b/R/pkg/R/context.R
@@ -330,7 +330,13 @@ spark.addFile <- function(path, recursive = FALSE) {
#'}
#' @note spark.getSparkFilesRootDirectory since 2.1.0
spark.getSparkFilesRootDirectory <- function() {
- callJStatic("org.apache.spark.SparkFiles", "getRootDirectory")
+ if (Sys.getenv("SPARKR_IS_RUNNING_ON_WORKER") == "") {
+ # Running on driver.
+ callJStatic("org.apache.spark.SparkFiles", "getRootDirectory")
+ } else {
+ # Running on worker.
+ Sys.getenv("SPARKR_SPARKFILES_ROOT_DIR")
+ }
}
#' Get the absolute path of a file added through spark.addFile.
@@ -345,7 +351,13 @@ spark.getSparkFilesRootDirectory <- function() {
#'}
#' @note spark.getSparkFiles since 2.1.0
spark.getSparkFiles <- function(fileName) {
- callJStatic("org.apache.spark.SparkFiles", "get", as.character(fileName))
+ if (Sys.getenv("SPARKR_IS_RUNNING_ON_WORKER") == "") {
+ # Running on driver.
+ callJStatic("org.apache.spark.SparkFiles", "get", as.character(fileName))
+ } else {
+ # Running on worker.
+ file.path(spark.getSparkFilesRootDirectory(), as.character(fileName))
+ }
}
#' Run a function over a list of elements, distributing the computations with Spark