Werken met externe tables
Externe tables gegevens opslaan in een map in de opslag van cloudobjecten in uw cloudtenant. U moet een opslaglocatie opgeven wanneer u een externe tabledefinieert.
Databricks raadt het gebruik van externe tables alleen aan wanneer u directe toegang tot de gegevens nodig hebt zonder rekenkracht op Azure Databricks te gebruiken. Unity Catalog-bevoegdheden worden niet afgedwongen wanneer gebruikers toegang hebben tot gegevensbestanden van externe systemen.
Notitie
Dit artikel richt zich op Unity Catalog externe tables. Externe tables in de verouderde Hive-metastore vertonen verschillend gedrag. Zie Databaseobjecten in de verouderde Hive-metastore.
Samenwerken met externe partij tables
Azure Databricks beheert alleen de metagegevens voor externe tables en maakt geen gebruik van de beheeropslaglocatie die gekoppeld is aan de desbetreffende schema. De table registratie in Unity Catalog is slechts een verwijzing naar gegevensbestanden. Wanneer u een externe tableneerslaat, worden de gegevensbestanden niet verwijderd.
Wanneer u een externe tablemaakt, kunt u een bestaande map met gegevensbestanden registreren als table of een pad opgeven om nieuwe gegevensbestanden te maken.
Externe tables kan de volgende bestandsformaten gebruiken:
- DELTA
- CSV
- JSON
- AVRO
- PARKET
- ORC
- SMS
Een externe table maken
Als u een externe tablewilt maken, kunt u SQL-opdrachten of Dataframe-schrijfbewerkingen gebruiken.
Voordat u begint
Als u een externe tablewilt maken, moet u voldoen aan de volgende machtigingsvereisten:
- De
CREATE EXTERNAL TABLE
-bevoegdheid op een externe locatie verleent toegang tot deLOCATION
, die door de externe tablewordt benaderd. - De
USE SCHEMA
machtiging voor de bovenliggende schemavan het table. - De
USE CATALOG
machtiging op de ouder catalogvan table. - De machtiging
CREATE TABLE
voor de ouder schemavan table.
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 tablete maken.
Vervang in de volgende voorbeelden de tijdelijke aanduiding values:
-
<catalog>
: de naam van de catalog die de tablebevat. -
<schema>
: de naam van de schema die de tablebevat. -
<table-name>
: een naam voor de table. -
<column-specification>
: de naam en het gegevenstype voor elke column. -
<bucket-path>
: het pad naar de cloudopslagbucket where de table wordt gemaakt. -
<table-directory>
: Er zal een map where met de naam table worden aangemaakt. Gebruik een unieke map voor elke table.
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Voor meer informatie over de creatie van tableparameters, zie CREATE TABLE.
Dataframe-schrijfbewerkingen
Veel gebruikers maken externe tables op basis van queryresultaten of DataFrame-schrijfbewerkingen. In de volgende artikelen ziet u een aantal van de vele patronen die u kunt gebruiken om een externe table te maken in Azure Databricks:
Een externe table verwijderen
Als u een table wilt verwijderen, moet u de eigenaar zijn of de MANAGE
bevoegdheid op de tablehebben. Als u een externe tablewilt 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 tableverwijdert. U moet de onderliggende gegevensbestanden rechtstreeks verwijderen als u gegevens wilt remove die zijn gekoppeld aan de table.
voorbeeldnotitieblok: externe tables maken
U kunt het volgende voorbeeldnotitieblok gebruiken om een catalog, schemaen externe tablete maken en machtigingen voor deze notitieblokken te beheren.