Werken met externe tabellen
Externe tabellen slaan gegevens op in een map in de opslag van cloudobjecten in uw cloudtenant. U moet een opslaglocatie opgeven wanneer u een externe tabel definieert.
Databricks raadt het gebruik van externe tabellen alleen aan wanneer u ook directe toegang tot de gegevens van niet-Databricks-clients nodig hebt. Unity Catalog-bevoegdheden worden niet afgedwongen wanneer gebruikers toegang hebben tot gegevensbestanden van externe systemen.
Waarschuwing
Als u metagegevens van externe tabellen bijwerkt met behulp van een niet-Databricks-client of met behulp van padgebaseerde toegang vanuit Databricks, worden de metagegevens niet automatisch gesynchroniseerd met Unity Catalog. Databricks raadt aan tegen dergelijke metagegevensupdates, maar als u er een uitvoert, moet u MSCK REPAIR TABLE <table-name> SYNC METADATA
uitvoeren om het schema in Unity Catalog up-to-date te brengen. Zie REPAIR TABLE.
Notitie
Dit artikel is gericht op externe tabellen van Unity Catalog. Externe tabellen in de verouderde Hive-metastore hebben verschillende gedragingen. Zie Databaseobjecten in de verouderde Hive-metastore.
Werken met externe tabellen
Azure Databricks beheert alleen de metagegevens voor externe tabellen en maakt geen gebruik van de opslaglocatie beheren die is gekoppeld aan het bijbehorende schema. De tabelregistratie in Unity Catalog is slechts een aanwijzer naar gegevensbestanden. Wanneer u een externe tabel verwijdert, worden de gegevensbestanden niet verwijderd.
Wanneer u een externe tabel maakt, kunt u een bestaande map met gegevensbestanden registreren als een tabel of een pad opgeven om nieuwe gegevensbestanden te maken.
Externe tabellen kunnen de volgende bestandsindelingen gebruiken:
- DELTA
- CSV
- JSON
- AVRO
- PARKET
- ORC
- SMS
Een externe tabel maken
Als u een externe tabel wilt maken, kunt u SQL-opdrachten of Dataframe-schrijfbewerkingen gebruiken.
Voordat u begint
Als u een externe tabel wilt maken, moet u voldoen aan de volgende machtigingsvereisten:
- De bevoegdheid
CREATE EXTERNAL TABLE
op een externe locatie die toegang verleent tot deLOCATION
waartoe de externe tabel toegang heeft. - De
USE SCHEMA
machtiging voor het bovenliggende schema van de tabel. - De
USE CATALOG
machtiging voor de oudercatalogus van de tabel. - De
CREATE TABLE
machtiging voor het bovenliggende schema van de tabel.
Zie Een externe locatie maken om cloudopslag te verbinden met Azure Databricks voor meer informatie over het configureren van externe locaties.
Voorbeelden van SQL-opdrachten
Gebruik een van de volgende opdrachtvoorbeelden in een notebook of de SQL-queryeditor om een externe tabel te maken.
Vervang in de volgende voorbeelden de plaatshouderwaarden.
-
<catalog>
: de naam van de catalogus die de tabel bevat. -
<schema>
: de naam van het schema dat de tabel bevat. -
<table-name>
: een naam voor de tabel. -
<column-specification>
: de naam en het gegevenstype voor elke kolom. -
<bucket-path>
: het pad naar de cloudopslagbucket waar de tabel wordt gemaakt. -
<table-directory>
: een map waarin de tabel wordt gemaakt. Gebruik een unieke map voor elke tabel.
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Zie CREATE TABLEvoor meer informatie over parameters voor het maken van tabellen.
Dataframe-schrijfbewerkingen
Veel gebruikers maken externe tabellen op basis van queryresultaten of DataFrame-schrijfbewerkingen. De volgende artikelen laten enkele van de vele patronen zien die u kunt gebruiken om een externe tabel te maken in Azure Databricks:
Een externe tabel neerzetten
Als u een tabel wilt verwijderen, moet u de eigenaar zijn of de bevoegdheid MANAGE
voor de tabel hebben. Als u een externe tabel wilt verwijderen, voert u de volgende SQL-opdracht uit:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Unity Catalog verwijdert de onderliggende gegevens in de cloudopslag niet wanneer u een externe tabel neer zet. U moet de onderliggende gegevensbestanden rechtstreeks verwijderen als u gegevens wilt verwijderen die aan de tabel zijn gekoppeld.
voorbeeldnotitieblok: externe tabellen maken
U kunt het volgende voorbeeldnotitieblok gebruiken om een catalogus, schema en externe tabel te maken en machtigingen voor deze tabellen te beheren.