面向使用者的目錄 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