Github user felixcheung commented on a diff in the pull request:
https://github.com/apache/spark/pull/13635#discussion_r67294459
--- Diff: R/pkg/R/sparkR.R ---
@@ -270,27 +291,97 @@ sparkRSQL.init <- function(jsc = NULL) {
#'}
sparkRHive.init <- function(jsc = NULL) {
- if (exists(".sparkRHivesc", envir = .sparkREnv)) {
- return(get(".sparkRHivesc", envir = .sparkREnv))
+ .Deprecated("sparkR.session.getOrCreate")
+
+ if (exists(".sparkRsession", envir = .sparkREnv)) {
+ return(get(".sparkRsession", envir = .sparkREnv))
}
- # If jsc is NULL, create a Spark Context
- sc <- if (is.null(jsc)) {
- sparkR.init()
- } else {
- jsc
+ # Default to without Hive support for backward compatibility.
+ sparkR.session.getOrCreate(enableHiveSupport = TRUE)
+}
+
+#' Get the existing SparkSession or initialize a new SparkSession.
+#'
+#' Additional Spark properties can be set (...), and these named
parameters take priority over
+#' over values in master, appName, named lists of sparkConfig.
+#'
+#' @param master The Spark master URL
+#' @param appName Application name to register with cluster manager
+#' @param sparkHome Spark Home directory
+#' @param sparkConfig Named list of Spark configuration to set on worker
nodes
+#' @param sparkExecutorConfig Named list of Spark configuration to be used
when launching executors
+#' @param sparkJars Character vector of jar files to pass to the worker
nodes
+#' @param sparkPackages Character vector of packages from
spark-packages.org
+#' @param enableHiveSupport Enable support for Hive; once set, this cannot
be turned off on an
+#' existing session
+#' @export
+#' @examples
+#'\dontrun{
+#' sparkR.session.getOrCreate()
+#' df <- read.json(path)
+#'
+#' sparkR.session.getOrCreate("local[2]", "SparkR", "/home/spark")
+#' sparkR.session.getOrCreate("yarn-client", "SparkR", "/home/spark",
+#' list(spark.executor.memory="4g"),
+#' list(LD_LIBRARY_PATH="/directory of JVM
libraries (libjvm.so) on workers/"),
+#' c("one.jar", "two.jar", "three.jar"),
+#' c("com.databricks:spark-avro_2.10:2.0.1"))
+#' sparkR.session.getOrCreate(spark.master = "yarn-client",
+#' spark.executor.memory = "4g")
+#'}
+#' @note since 2.0.0
+
+sparkR.session.getOrCreate <- function(
+ master = "",
+ appName = "SparkR",
+ sparkHome = Sys.getenv("SPARK_HOME"),
+ sparkConfig = list(),
+ sparkExecutorConfig = list(),
+ sparkJars = "",
+ sparkPackages = "",
+ enableHiveSupport = TRUE,
--- End diff --
It's a bit different in R since we only have one session at a time (for
now?), i thought it would be better to default to the "more comprehensive" one
with hive support. also it checks if Spark is built with Hive support first and
fallback gracefully
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]