aboutsummaryrefslogtreecommitdiff
path: root/R/pkg/R/catalog.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/pkg/R/catalog.R')
-rw-r--r--R/pkg/R/catalog.R59
1 files changed, 50 insertions, 9 deletions
diff --git a/R/pkg/R/catalog.R b/R/pkg/R/catalog.R
index 4b7f841b55..e59a702433 100644
--- a/R/pkg/R/catalog.R
+++ b/R/pkg/R/catalog.R
@@ -17,7 +17,7 @@
# catalog.R: SparkSession catalog functions
-#' Create an external table
+#' (Deprecated) Create an external table
#'
#' Creates an external table based on the dataset in a data source,
#' Returns a SparkDataFrame associated with the external table.
@@ -29,10 +29,11 @@
#' @param tableName a name of the table.
#' @param path the path of files to load.
#' @param source the name of external data source.
-#' @param schema the schema of the data for certain data source.
+#' @param schema the schema of the data required for some data sources.
#' @param ... additional argument(s) passed to the method.
#' @return A SparkDataFrame.
-#' @rdname createExternalTable
+#' @rdname createExternalTable-deprecated
+#' @seealso \link{createTable}
#' @export
#' @examples
#'\dontrun{
@@ -43,24 +44,64 @@
#' @method createExternalTable default
#' @note createExternalTable since 1.4.0
createExternalTable.default <- function(tableName, path = NULL, source = NULL, schema = NULL, ...) {
+ .Deprecated("createTable", old = "createExternalTable")
+ createTable(tableName, path, source, schema, ...)
+}
+
+createExternalTable <- function(x, ...) {
+ dispatchFunc("createExternalTable(tableName, path = NULL, source = NULL, ...)", x, ...)
+}
+
+#' Creates a table based on the dataset in a data source
+#'
+#' Creates a table based on the dataset in a data source. Returns a SparkDataFrame associated with
+#' the table.
+#'
+#' The data source is specified by the \code{source} and a set of options(...).
+#' If \code{source} is not specified, the default data source configured by
+#' "spark.sql.sources.default" will be used. When a \code{path} is specified, an external table is
+#' created from the data at the given path. Otherwise a managed table is created.
+#'
+#' @param tableName the qualified or unqualified name that designates a table. If no database
+#' identifier is provided, it refers to a table in the current database.
+#' @param path (optional) the path of files to load.
+#' @param source (optional) the name of the data source.
+#' @param schema (optional) the schema of the data required for some data sources.
+#' @param ... additional named parameters as options for the data source.
+#' @return A SparkDataFrame.
+#' @rdname createTable
+#' @seealso \link{createExternalTable}
+#' @export
+#' @examples
+#'\dontrun{
+#' sparkR.session()
+#' df <- createTable("myjson", path="path/to/json", source="json", schema)
+#'
+#' createTable("people", source = "json", schema = schema)
+#' insertInto(df, "people")
+#' }
+#' @name createTable
+#' @note createTable since 2.2.0
+createTable <- function(tableName, path = NULL, source = NULL, schema = NULL, ...) {
sparkSession <- getSparkSession()
options <- varargsToStrEnv(...)
if (!is.null(path)) {
options[["path"]] <- path
}
+ if (is.null(source)) {
+ source <- getDefaultSqlSource()
+ }
catalog <- callJMethod(sparkSession, "catalog")
if (is.null(schema)) {
- sdf <- callJMethod(catalog, "createExternalTable", tableName, source, options)
+ sdf <- callJMethod(catalog, "createTable", tableName, source, options)
+ } else if (class(schema) == "structType") {
+ sdf <- callJMethod(catalog, "createTable", tableName, source, schema$jobj, options)
} else {
- sdf <- callJMethod(catalog, "createExternalTable", tableName, source, schema$jobj, options)
+ stop("schema must be a structType.")
}
dataFrame(sdf)
}
-createExternalTable <- function(x, ...) {
- dispatchFunc("createExternalTable(tableName, path = NULL, source = NULL, ...)", x, ...)
-}
-
#' Cache Table
#'
#' Caches the specified table in-memory.