Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als je toegang tot externe gegevens voor Unity Catalog hebt ingeschakeld, kun je toegang tot externe gegevens toevoegen aan door pipelines beheerde en zelfstandige gematerialiseerde weergaven en streamingtabellen. Hierdoor hebben externe Delta- en Iceberg-clients toegang tot uw gegevenssets via de REST API's van de Unity-catalogus en icebergcatalogus, zonder dat hiervoor een volledige gegevenskopie is vereist.
Externe data-toegang werkt voor datasets die worden beheerd door Lakeflow-pijplijnen en voor zelfstandige gematerialiseerde weergaven en streamingtabellen.
Capabilities
Door externe data-toegang te gebruiken, worden dezelfde data beschikbaar gesteld die in Azure Databricks beschikbaar zijn voor pipeline-managed en standalone gematerialiseerde weergaven en streamingtabellen, zonder een duplicaat van de data te creëren. Dit biedt de volgende kenmerken voor prestaties en functionaliteit:
- Er zijn geen gegevenskopie vereist: Externe toegang is ingeschakeld zonder de volledige gegevensset te dupliceren.
- Externe toegang via API's: Lees gerealiseerde weergaven en streamingtabellen met behulp van Delta Lake- of Iceberg-API's.
- Consistentie lezen na schrijven: Externe lezers hebben toegang tot up-to-datumgegevens na een update van de gegevensset, waardoor er geen veroudering mogelijk is. Updates zijn direct beschikbaar na het vernieuwen.
- Eén tabelobject: Gegevenssets worden extern weergegeven als beheerde tabellen met dezelfde naam als de brongegevensset in Unity Catalog-API's.
- Lage kosten: Omdat de volledige gegevensset niet wordt gekopieerd, is de overhead voor het leveren van externe toegang laag.
Requirements
De vereisten voor uw gegevenssets zijn:
- Unity Catalog: Uw streamingtabellen en gerealiseerde weergaven moeten Unity Catalog gebruiken.
- Databricks Runtime-versie: U moet Databricks Runtime 17.3 en hoger gebruiken.
- Standaard publicatiemodus: Externe leesbaarheid wordt alleen ondersteund in de standaard publicatiemodus. Om externe leesbaarheid te gebruiken, migrer naar de standaard publicatiemodus. Functies die afhankelijk zijn van externe metadata, zoals gematerialiseerde weergave-CDF, zullen werken in de verouderde publicatiemodus.
De vereisten voor uw klanten zijn:
- Delta API-versie: De client moet Delta Lake-API's 4.0.0 of hoger ondersteunen, inclusief verwijderingsvectoren, en moet de Catalogus-API's van Unity Catalog gebruiken voor toegang.
- Iceberg-API-versie: De client kan ook toegang krijgen met behulp van Iceberg-catalogus-API's die ondersteuning bieden voor de Iceberg v3-specificatie.
-
Unity Catalog-bevoegdheden: De principal die de gegevenssets extern leest, moet de externe USE SCHEMA bevoegdheid voor het schema en
SELECTde bevoegdheid voor de tabel hebben.
Note
Als uw client deze vereisten niet ondersteunt, kunt u ook de compatibiliteitsmodus gebruiken, die ondersteuning biedt voor alle Delta- en Iceberg-clients, maar u moet wel een volledige kopie van de gegevensset maken.
Toegang inschakelen voor een gegevensset
Er zijn twee stappen om externe toegang voor een dataset mogelijk te maken.
Schakel externe metadata in via de pijplijnconfiguratie of een tabeleigenschap. De tabelniveau-instelling heeft voorrang boven de pipelineconfiguratie wanneer beide zijn ingesteld en wordt ondersteund voor zowel pipeline-managed als standalone streaming-tabel en gematerialiseerde weergave.
Pijplijnconfiguratie: Stel in
pipelines.externalMetadata.enabledoptrueom externe metadata voor alle datasets in de pijplijn in te schakelen. Zelfstandige gematerialiseerde weergaven en streamingtabellen gemaakt met Databricks SQL hebben geen pipelineconfiguratie; Gebruik in plaats daarvan een tabeleigenschap.Gebruikersinterface voor pijplijninstellingen
Voltooi in de pijplijninstellingen de volgende stappen:
- Open uw pijplijn en klik op Instellingen.
- Voeg onder Configuratie een sleutel-waardepaar toe: Sleutel
pipelines.externalMetadata.enabled, Waardetrue. - Klik op Opslaan.
JSON voor pijplijnconfiguratie
Voeg in de
configurationsectie van uw pijplijn-JSON het volgende toe:{ "configuration": { "pipelines.externalMetadata.enabled": "true" } }Tabeleigenschap: Voeg de volgende eigenschap toe aan de streamingtabel of gematerialiseerde weergavedefinitie. Voor Lakeflow Connect Pipelines, zie Set Delta table properties.
CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES('pipelines.externalMetadata.enabled' = 'true')
Nadat u de configuratie hebt opgeslagen, voert u de pijplijn uit of start u deze opnieuw om de wijzigingen toe te passen:
- Getriggerde pijplijnen: voer de pijplijn één keer uit.
- Continue pijplijnen: Stop en start de pijplijn opnieuw.
Gebruik voor zelfstandige Databricks SQL-objecten
CREATE OR REPLACE MATERIALIZED VIEWofCREATE OR REFRESH STREAMING TABLEmet de tabeleigenschap. De create- of refresh-instructie past de eigenschap toe.Als je van plan bent de dataset te lezen met een moderne Iceberg-client, voeg dan de volgende UniForm Iceberg V3-eigenschappen toe naast de externe metadata-eigenschap. Voor Lakeflow Connect Pipelines, zie Set Delta table properties.
Property Gebruik 'pipelines.externalMetadata.enabled' = 'true'Schakel externe toegang voor de tabel in. Deze instelling op tabelniveau heeft voorrang op de pipelineconfiguratie wanneer beide zijn ingesteld. 'delta.columnMapping.mode' = 'name'Kolomtoewijzing is vereist voor Iceberg. 'delta.enableRowTracking' = 'true'Schakel rijtracering in voor leesbewerkingen van Iceberg. 'delta.universalFormat.enabledFormats' = 'iceberg'Activeer Iceberg-reads. 'delta.enableIcebergCompatV3' = 'true'Gebruik Iceberg V3 voor leesbewerkingen in Iceberg. CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES( 'delta.columnMapping.mode' = 'name', 'delta.enableRowTracking' = 'true', 'delta.enableIcebergCompatV3' = 'true', 'delta.universalFormat.enabledFormats' = 'iceberg', 'pipelines.externalMetadata.enabled' = 'true')Voor gematerialiseerde weergaven kun je in plaats daarvan de equivalente
USING ICEBERGsyntaxis gebruiken.CREATE OR REFRESH MATERIALIZED VIEW tbl_name USING ICEBERGVoor pipeline-beheerde datasets gebruik je de bovenstaande pipeline-update-instructies om de Iceberg-eigenschappen toe te passen. Voor standalone Databricks SQL-objecten voer je de objectdefinitie opnieuw uit met de bijgewerkte eigenschappen. Gebruik
CREATE OR REPLACE MATERIALIZED VIEWvoor een gematerialiseerde weergave ofCREATE OR REFRESH STREAMING TABLEvoor een streamingtabel. Om de eigenschappen van je dataset te zien, gebruik deDESCRIBE DETAILofDESCRIBE EXTENDEDSQL-instructies.
Probleemoplossing voor externe gegevenstoegang
Als je denkt dat de externe metadata verouderd is, kan een principal met het MODIFY privilege op de tabel handmatig de metadata-update op gedeelde clusterberekening activeren met Databricks Runtime 17.3 of hoger:
REPAIR TABLE <catalog>.<schema>.<table-name> SYNC METADATA;
Je kunt de aanwezigheid van de Iceberg-metadata controleren in de Catalog Explorer UI op de pagina met tabeldetails. Alternatief kun je de volgende commando's uitvoeren in de SQL-editor of een Azure Databricks-notebook:
DESCRIBE DETAIL <catalog>.<schema>.<table-name>;
DESCRIBE EXTENDED <catalog>.<schema>.<table-name>;
Voor een streamingtabel kun je de Iceberg-metadataversie vergelijken met de nieuwste streamingtabelversie. Versievergelijking voor gematerialiseerde weergaven is nog niet beschikbaar.
Gegevens van externe clients lezen
De volgende secties geven voorbeelden van hoe je je dataset kunt lezen vanuit verschillende clients en omgevingen.
Voor installatiedetails, zie Delta clienttoegang en Iceberg clienttoegang.
Unity REST API gebruiken met de Spark Delta Reader
Gebruik Apache Spark™ versie 4.0 of hoger. U kunt downloaden van https://spark.apache.org/downloads.html.
Voer op basis van uw cloudprovider de volgende opdracht uit om een Spark SQL-shell te starten met Delta 4.0 en Unity Catalog.
AWS
bin/spark-sql \ --packages org.apache.spark:spark-hadoop-cloud_2.13:4.0.0,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>Azuur
bin/spark-sql \ --packages org.apache.hadoop:hadoop-azure:3.3.6,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>GCP
bin/spark-sql \ --packages io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem \ --conf spark.hadoop.fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>Vanuit de SQL-shell hebt u nu toegang tot uw gegevensset met Spark SQL. Voorbeeld:
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
De Snowflake Iceberg Reader gebruiken
In Snowflake kunt u de Iceberg Reader gebruiken. Hiervoor is ondersteuning voor Iceberg v3 in Snowflake vereist.
Stel de Iceberg REST-catalogus in Snowflake in.
CREATE OR REPLACE CATALOG INTEGRATION my_uc_int CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG CATALOG_NAMESPACE = '<uc-schema-name>' REST_CONFIG = ( CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest' CATALOG_NAME = '<uc-catalog-name>' ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS ) REST_AUTHENTICATION = ( TYPE = BEARER BEARER_TOKEN = '<PAT>' ) ENABLED = TRUE; CREATE OR REPLACE ICEBERG TABLE my_table CATALOG = 'my_uc_int' CATALOG_TABLE_NAME = '<uc-table-name>';Toegang tot je dataset via Snowflake SQL.
ALTER ICEBERG TABLE my_table REFRESH; SELECT * FROM my_table;
De Iceberg REST-catalogus gebruiken met Spark Iceberg-lezer
Gebruik Apache Spark™ versie 4.0 of hoger. U kunt downloaden van https://spark.apache.org/downloads.html.
Voer in AWS de volgende opdracht uit om een Spark SQL-shell te starten met Iceberg v3.
bin/spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-4.0_2.13:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0 \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.<uc-catalog-name>=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.io-impl=org.apache.iceberg.aws.s3.S3FileIO \ --conf spark.sql.catalog.<uc-catalog-name>.type=rest \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url>/api/2.1/unity-catalog/iceberg-rest \ --conf spark.sql.catalog.<uc-catalog-name>.token='<PAT>' \ --conf spark.sql.catalog.<uc-catalog-name>.warehouse=<uc-catalog-name> \ --conf spark.sql.iceberg.vectorization.enabled=falseOpen uw gegevensset vanuit Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Migreren vanuit de compatibiliteitsmodus
Als u momenteel een gegevensset deelt met behulp van de compatibiliteitsmodus, kunt u migreren naar het gebruik van externe gegevenstoegang.
- Schakel deze functie in volgens de stappen in Het inschakelen van toegang voor een gegevensset.
- Schakel de compatibiliteitsmodus uit. Zie Compatibiliteitsmodus uitschakelen
Beperkingen
De volgende zijn de bekende beperkingen van externe gegevenstoegang voor streamingtabellen en gematerialiseerde weergaven.
- Externe schrijfbewerkingen: Externe schrijfbewerkingen naar pijplijngegevenssets worden niet ondersteund.
- Path-Based Access: Externe lezers waarvoor padgebaseerde toegang is vereist (rechtstreeks lezen via een opslaglocatie in plaats van de UC API-interface) worden niet ondersteund. Ter ondersteuning van padgebaseerde toegang kunt u de compatibiliteitsmodus gebruiken, die wel padgebaseerde toegang ondersteunt, maar hiervoor is een volledige kopie van de gegevensset vereist.
- Beveiligingsfuncties: Het ondersteunen van beveiliging op rijniveau of maskering op kolomniveau van externe leesbewerkingen wordt niet ondersteund.
- Tijdreizen:Tijdreizen via deze functie wordt niet ondersteund.
- Catalogus-commits (bèta):Catalogus-commits zijn niet compatibel met toegang tot externe gegevens. Als je toegang tot externe gegevens wilt gebruiken voor een streamingtabel of een gematerialiseerde weergave, moet je eerst catalogus-commits uitschakelen.
- Fabric: lezen vanuit Microsoft Fabric wordt niet ondersteund.