共用方式為


目錄

面向使用者的目錄 API,可透過 SparkSession.catalog存取。 這是它 Scala 實作 org.apache.spark.sql.catalog.Catalog的一個薄包裝。

語法

# 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) 根據資料來源中的資料建立資料表,並回傳相關的 DataFrame。
dropTempView(viewName) 會丟出帶有名稱的本地臨時視圖。 如果視圖被快取,也會解除快取。
dropGlobalTempView(viewName) 會丟棄帶有名稱的全域暫存視圖。 如果視圖被快取,也會解除快取。
isCached(tableName) 如果該資料表目前正在記憶體中快取,則回傳 true。
cacheTable(tableName, storageLevel) 將指定的資料表快取於記憶體中或以指定儲存層級。 預設是MEMORY_AND_DISK。
uncacheTable(tableName) 從記憶體快取中移除指定的資料表。
clearCache() 移除所有快取資料表。
refreshTable(tableName) 使給定資料表中所有快取資料與元資料失效並刷新。
recoverPartitions(tableName) 還原給定資料表的所有分割區並更新目錄。 只適用於分割資料表。
refreshByPath(path) 會使包含指定資料來源路徑的任意 DataFrame 的快取資料與中繼資料失效並重新更新。

Examples

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