通过


Catalog

面向用户的目录 API,可通过 SparkSession.catalog. 这是其 Scala 实现 org.apache.spark.sql.catalog.Catalog的精简包装器。

Syntax

# Access through SparkSession
spark.catalog

方法

方法 说明
currentCatalog() 返回此会话中的当前默认目录。
setCurrentCatalog(catalogName) 设置此会话中的当前默认目录。
listCatalogs(pattern) 返回此会话中的目录列表。
currentDatabase() 返回此会话中的当前默认数据库。
setCurrentDatabase(dbName) 设置此会话中的当前默认数据库。
listDatabases(pattern) 返回所有会话中可用的数据库列表。
getDatabase(dbName) 获取具有指定名称的数据库。 找不到数据库时引发 AnalysisException。
databaseExists(dbName) 检查具有指定名称的数据库是否存在。
listTables(dbName, pattern) 返回指定数据库中的表和视图的列表。 包括所有临时视图。
getTable(tableName) 获取具有指定名称的表或视图。 当找不到表时,将引发 AnalysisException。
tableExists(tableName, dbName) 检查具有指定名称的表或视图是否存在。
listColumns(tableName, dbName) 返回指定数据库中给定表或视图的列列表。
listFunctions(dbName, pattern) 返回在指定数据库中注册的函数的列表。 包括所有临时函数。
functionExists(functionName, dbName) 检查具有指定名称的函数是否存在。 包括临时函数。
getFunction(functionName) 获取具有指定名称的函数。 找不到函数时引发 AnalysisException。
createTable(tableName, path, source, schema, description, **options) 基于数据源中的数据集创建表,并返回关联的数据帧。
dropTempView(viewName) 删除具有给定名称的本地临时视图。 如果视图已缓存,则还会取消缓存视图。
dropGlobalTempView(viewName) 删除具有给定名称的全局临时视图。 如果视图已缓存,则还会取消缓存视图。
isCached(tableName) 如果表当前缓存在内存中,则返回 true。
cacheTable(tableName, storageLevel) 使用给定存储级别缓存指定的内存中表。 默认为MEMORY_AND_DISK。
uncacheTable(tableName) 从内存中缓存中删除指定的表。
clearCache() 从内存中缓存中删除所有缓存表。
refreshTable(tableName) 使给定表的所有缓存数据和元数据失效并刷新。
recoverPartitions(tableName) 恢复给定表的所有分区并更新目录。 仅适用于已分区表。
refreshByPath(path) 使包含给定数据源路径的任何 DataFrame 的所有缓存数据和元数据失效并刷新。

示例

spark.catalog.currentDatabase()
'default'
spark.catalog.listDatabases()
[Database(name='default', catalog='spark_catalog', description='default database', ...)]
_ = spark.sql("CREATE TABLE tbl1 (name STRING, age INT) USING parquet")
spark.catalog.tableExists("tbl1")
True
spark.catalog.cacheTable("tbl1")
spark.catalog.isCached("tbl1")
True
spark.catalog.uncacheTable("tbl1")
spark.catalog.isCached("tbl1")
False