Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
pemeriksaan Databricks SQL
Databricks Runtime 17.3 ke atas
Penting
Fitur ini ada di Pratinjau Umum dan hanya tersedia untuk pelanggan yang berpartisipasi saat ini. Untuk berpartisipasi dalam pratinjau, daftarkan diri Anda dengan mengisi formulir ini. Fitur ini hanya mendukung pemutusan koneksi untuk katalog asing menggunakan Hive Metastore (HMS) dan Glue Federation.
DROP CONNECTION Gunakan perintah untuk mengonversi katalog asing ke katalog standar di Katalog Unity. Setelah menghilangkan koneksi, katalog tidak lagi menyinkronkan tabel asing dari katalog eksternal. Sebaliknya, ia bertindak seperti katalog Unity Catalog standar yang berisi tabel terkelola atau eksternal. Katalog Anda sekarang diberi label sebagai standar alih-alih asing di Unity Catalog. Perintah ini tidak memengaruhi tabel di katalog eksternal Anda; itu hanya berdampak pada katalog asing Anda di Unity Catalog.
Memerlukan izin OWNER atau MANAGE, serta USE_CATALOG dan BROWSE pada katalog.
Syntax
ALTER CATALOG catalog_name DROP CONNECTION { RESTRICT | FORCE }
Parameter-parameternya
-
Nama katalog asing untuk dikonversi ke katalog standar.
MEMBATASI
Perilaku default.
DROP CONNECTIONdenganRESTRICTgagal saat mengonversi katalog asing ke katalog standar jika ada tabel asing atau tampilan asing dalam katalog.Untuk memutakhirkan tabel asing ke tabel terkelola Atau eksternal Katalog Unity, lihat Mengonversi tabel asing ke tabel Katalog Unity terkelola atau Mengonversi tabel asing ke tabel Katalog Unity eksternal. Untuk mengonversi tampilan luar, lihat SET DIKELOLA (TAMPILAN LUAR).
PAKSA
DROP CONNECTIONdenganFORCEmenghilangkan tabel atau tampilan asing yang tersisa dalam katalog asing saat mengonversi katalog asing ke katalog standar. Perintah ini tidak menghilangkan data atau metadata apa pun di katalog eksternal Anda; itu hanya menghilangkan metadata yang disinkronkan ke Dalam Katalog Unity untuk membuat tabel asing.Peringatan
Anda tidak dapat mengembalikan perintah ini. Jika Anda ingin menggabungkan tabel asing kembali ke Unity Catalog, Anda harus membuat ulang katalog asing.
Examples
-- Convert an existing foreign catalog using default RESTRICT behavior
> ALTER CATALOG hms_federated_catalog DROP CONNECTION;
OK
-- Convert an existing foreign catalog using FORCE to drop foreign tables
> ALTER CATALOG hms_federated_catalog DROP CONNECTION FORCE;
OK
-- RESTRICT fails if foreign tables or views exist
> ALTER CATALOG hms_federated_catalog DROP CONNECTION RESTRICT;
[CATALOG_CONVERSION_FOREIGN_ENTITY_PRESENT] Catalog conversion from UC Foreign to UC Standard failed because catalog contains foreign entities (up to 10 are shown here): <entityNames>. To see the full list of foreign entities in this catalog, please refer to the scripts below.
-- FORCE fails if catalog type isn't supported
> ALTER CATALOG redshift_federated_catalog DROP CONNECTION FORCE;
[CATALOG_CONVERSION_UNSUPPORTED_CATALOG_TYPE] Catalog cannot be converted from UC Foreign to UC Standard. Only HMS and Glue Foreign UC catalogs can be converted to UC Standard.
Skrip untuk memeriksa tabel dan tampilan asing
Nota
Sebelum menggunakan DROP CONNECTION RESTRICT, Anda dapat menggunakan skrip Python ini untuk memeriksa tabel dan tampilan asing di katalog Anda menggunakan REST API Katalog Unity.
Skrip untuk mencantumkan semua tabel dan tampilan asing dari katalog federasi:
import requests
def list_foreign_uc_tables_and_views(catalog_name, pat_token, workspace_url):
"""
Lists all foreign tables and views in the specified Unity Catalog.
Args:
catalog_name (str): The name of the catalog to search.
pat_token (str): Personal Access Token for Databricks API authentication.
workspace_url (str): Databricks workspace hostname (e.g., "https://adb-xxxx.x.azuredatabricks.net").
Returns:
list: A list of dictionaries containing information about the foreign tables/views.
"""
base_url = f"{workspace_url}/api/2.1/unity-catalog"
headers = {
"Authorization": f"Bearer {pat_token}",
"Content-Type": "application/json"
}
# Step 1: List all schemas in the catalog (GET request)
schemas_url = f"{base_url}/schemas"
schemas_params = {
"catalog_name": catalog_name,
"include_browse": "true"
}
schemas_resp = requests.get(schemas_url, headers=headers, params=schemas_params)
schemas_resp.raise_for_status()
schemas = schemas_resp.json().get("schemas", [])
schema_names = [schema["name"] for schema in schemas]
result = []
# Step 2: For each schema, list all tables/views and filter (GET request)
for schema_name in schema_names:
tables_url = f"{base_url}/table-summaries"
tables_params = {
"catalog_name": catalog_name,
"schema_name_pattern": schema_name,
"include_manifest_capabilities": "true"
}
tables_resp = requests.get(tables_url, headers=headers, params=tables_params)
tables_resp.raise_for_status()
tables = tables_resp.json().get("tables", [])
for table in tables:
# Use OR for filtering as specified
if (
table.get("table_type") == "FOREIGN"
or table.get("securable_kind") in {
"TABLE_FOREIGN_HIVE_METASTORE_VIEW",
"TABLE_FOREIGN_HIVE_METASTORE_DBFS_VIEW"
}
):
result.append(table.get("full_name"))
return result
# Example usage:
# catalog = "hms_foreign_catalog"
# token = "dapiXXXXXXXXXX"
# workspace = "https://adb-xxxx.x.azuredatabricks.net"
# foreign_tables = list_foreign_uc_tables_and_views(catalog, token, workspace)
# for entry in foreign_tables:
# print(entry)
Skrip untuk mencantumkan semua tabel dan tampilan asing yang berada dalam status provisi ACTIVE:
import requests
def list_foreign_uc_tables_and_views(catalog_name, pat_token, workspace_url):
"""
Lists all foreign tables and views in the specified Unity Catalog.
Args:
catalog_name (str): The name of the catalog to search.
pat_token (str): Personal Access Token for Databricks API authentication.
workspace_url (str): Databricks workspace hostname (e.g., "https://adb-xxxx.x.azuredatabricks.net").
Returns:
list: A list of dictionaries containing information about the foreign tables/views.
"""
base_url = f"{workspace_url}/api/2.1/unity-catalog"
headers = {
"Authorization": f"Bearer {pat_token}",
"Content-Type": "application/json"
}
# Step 1: List all schemas in the catalog (GET request)
schemas_url = f"{base_url}/schemas"
schemas_params = {
"catalog_name": catalog_name,
"include_browse": "true"
}
schemas_resp = requests.get(schemas_url, headers=headers, params=schemas_params)
schemas_resp.raise_for_status()
schemas = schemas_resp.json().get("schemas", [])
schema_names = [schema["name"] for schema in schemas]
result = []
# Step 2: For each schema, list all tables/views and filter (GET request)
for schema_name in schema_names:
tables_url = f"{base_url}/table-summaries"
tables_params = {
"catalog_name": catalog_name,
"schema_name_pattern": schema_name,
"include_manifest_capabilities": "true"
}
tables_resp = requests.get(tables_url, headers=headers, params=tables_params)
tables_resp.raise_for_status()
tables = tables_resp.json().get("tables", [])
for table in tables:
# Use OR for filtering as specified
if (
table.get("table_type") == "FOREIGN"
or table.get("securable_kind") in {
"TABLE_FOREIGN_HIVE_METASTORE_VIEW",
"TABLE_FOREIGN_HIVE_METASTORE_DBFS_VIEW"
}
):
table_full_name = table.get('full_name')
get_table_url = f"{base_url}/tables/{table_full_name}"
tables_params = {
"full_name": table_full_name,
"include_browse": "true",
"include_manifest_capabilities": "true"
}
table_resp = requests.get(get_table_url, headers=headers, params=tables_params)
table_resp.raise_for_status()
provisioning_info = table_resp.json().get("provisioning_info", dict()).get("state", "")
if provisioning_info == "ACTIVE":
result.append(table_full_name)
return result
# Example usage:
# catalog = "hms_foreign_catalog"
# token = "dapiXXXXXXXXXX"
# workspace = "https://adb-xxxx.x.azuredatabricks.net"
# foreign_tables = list_foreign_uc_tables_and_views(catalog, token, workspace)
# for entry in foreign_tables:
# print(entry)