# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Methods to directly access the JVM running the SparkR backend. #' Call Java Methods #' #' Call a Java method in the JVM running the Spark driver. The return #' values are automatically converted to R objects for simple objects. Other #' values are returned as "jobj" which are references to objects on JVM. #' #' @details #' This is a low level function to access the JVM directly and should only be used #' for advanced use cases. The arguments and return values that are primitive R #' types (like integer, numeric, character, lists) are automatically translated to/from #' Java types (like Integer, Double, String, Array). A full list can be found in #' serialize.R and deserialize.R in the Apache Spark code base. #' #' @param x object to invoke the method on. Should be a "jobj" created by newJObject. #' @param methodName method name to call. #' @param ... parameters to pass to the Java method. #' @return the return value of the Java method. Either returned as a R object #' if it can be deserialized or returned as a "jobj". See details section for more. #' @export #' @seealso \link{sparkR.callJStatic}, \link{sparkR.newJObject} #' @rdname sparkR.callJMethod #' @examples #' \dontrun{ #' sparkR.session() # Need to have a Spark JVM running before calling newJObject #' # Create a Java ArrayList and populate it #' jarray <- sparkR.newJObject("java.util.ArrayList") #' sparkR.callJMethod(jarray, "add", 42L) #' sparkR.callJMethod(jarray, "get", 0L) # Will print 42 #' } #' @note sparkR.callJMethod since 2.0.1 sparkR.callJMethod <- function(x, methodName, ...) { callJMethod(x, methodName, ...) } #' Call Static Java Methods #' #' Call a static method in the JVM running the Spark driver. The return #' value is automatically converted to R objects for simple objects. Other #' values are returned as "jobj" which are references to objects on JVM. #' #' @details #' This is a low level function to access the JVM directly and should only be used #' for advanced use cases. The arguments and return values that are primitive R #' types (like integer, numeric, character, lists) are automatically translated to/from #' Java types (like Integer, Double, String, Array). A full list can be found in #' serialize.R and deserialize.R in the Apache Spark code base. #' #' @param x fully qualified Java class name that contains the static method to invoke. #' @param methodName name of static method to invoke. #' @param ... parameters to pass to the Java method. #' @return the return value of the Java method. Either returned as a R object #' if it can be deserialized or returned as a "jobj". See details section for more. #' @export #' @seealso \link{sparkR.callJMethod}, \link{sparkR.newJObject} #' @rdname sparkR.callJStatic #' @examples #' \dontrun{ #' sparkR.session() # Need to have a Spark JVM running before calling callJStatic #' sparkR.callJStatic("java.lang.System", "currentTimeMillis") #' sparkR.callJStatic("java.lang.System", "getProperty", "java.home") #' } #' @note sparkR.callJStatic since 2.0.1 sparkR.callJStatic <- function(x, methodName, ...) { callJStatic(x, methodName, ...) } #' Create Java Objects #' #' Create a new Java object in the JVM running the Spark driver. The return #' value is automatically converted to an R object for simple objects. Other #' values are returned as a "jobj" which is a reference to an object on JVM. #' #' @details #' This is a low level function to access the JVM directly and should only be used #' for advanced use cases. The arguments and return values that are primitive R #' types (like integer, numeric, character, lists) are automatically translated to/from #' Java types (like Integer, Double, String, Array). A full list can be found in #' serialize.R and deserialize.R in the Apache Spark code base. #' #' @param x fully qualified Java class name. #' @param ... arguments to be passed to the constructor. #' @return the object created. Either returned as a R object #' if it can be deserialized or returned as a "jobj". See details section for more. #' @export #' @seealso \link{sparkR.callJMethod}, \link{sparkR.callJStatic} #' @rdname sparkR.newJObject #' @examples #' \dontrun{ #' sparkR.session() # Need to have a Spark JVM running before calling newJObject #' # Create a Java ArrayList and populate it #' jarray <- sparkR.newJObject("java.util.ArrayList") #' sparkR.callJMethod(jarray, "add", 42L) #' sparkR.callJMethod(jarray, "get", 0L) # Will print 42 #' } #' @note sparkR.newJObject since 2.0.1 sparkR.newJObject <- function(x, ...) { newJObject(x, ...) }