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.
Belangrijk
Deze functie bevindt zich in openbare preview-versie.
Met behulp van de compatibiliteitsmodus kunt u beheerde tabellen van Unity Catalog, gerealiseerde weergaven en streamingtabellen van externe systemen lezen en optimale prestaties behouden in Azure Databricks. Met deze functie worden automatisch alleen-lezen versies van uw tabellen gegenereerd die toegankelijk zijn voor elke Delta Lake- of Iceberg-client.
Overzicht
Wanneer deze optie is ingeschakeld voor een beheerde tabel, streamingtabel of gerealiseerde weergave, genereert de compatibiliteitsmodus een alleen-lezen versie van uw tabel op een gekozen locatie. Deze compatibiliteitsversie bevat v1-metagegevens voor zowel Delta Lake- als Iceberg-indelingen, die de volgende mogelijkheden bieden:
- Interoperabiliteit met een Delta Lake-client: lees uw beheerde tabellen, inclusief streamingtabellen of gerealiseerde weergaven, van clients zoals Amazon Athene, Microsoft Fabric, Snowflake en Amazon Redshift rechtstreeks vanuit opslag of via de Unity REST API
- Interoperabiliteit met elke Iceberg-client: lees uw beheerde tabellen, inclusief streamingtabellen of gerealiseerde weergaven, van Iceberg-clients zoals Apache Spark, Apache Trino en Snowflake via de Iceberg REST-catalogus
- Automatisering instellen en vergeten: Gegevens- en metagegevensvernieuwingen automatiseren voor compatibiliteitsversies, met de mogelijkheid om vernieuwingsintervallen in bijna realtime te configureren
Vereiste voorwaarden
Als u de compatibiliteitsmodus voor een tabel wilt inschakelen, moet u Unity Catalog gebruiken. Alleen streamingtabellen van Unity Catalog, gerealiseerde weergaven van Unity Catalog en beheerde tabellen van Unity Catalog worden ondersteund. Externe tabellen van Unity Catalog worden niet ondersteund.
Controleer bovendien of u een externe locatie hebt geregistreerd in Unity Catalog met de juiste instellingen en machtigingen:
- De doellocatie moet aanwezig zijn in uw opslagaccount en leeg zijn.
- De doellocatie of een van de bovenliggende mappen moet worden geregistreerd als een externe locatie in Unity Catalog.
- U moet
CREATE EXTERNAL TABLEprivileges hebben voor de externe locatie. - De doellocatie en eventuele bovenliggende mappen of submappen mogen de afgelopen 7 dagen niet zijn gebruikt als locatie voor compatibiliteitsmodus voor een andere tabel.
Compatibiliteitsmodus inschakelen voor tabellen
Voor streamingtabellen, gerealiseerde weergaven en beheerde ondiepe klonen stelt u de volgende tabeleigenschappen in bij het maken van tabellen:
CREATE [STREAMING TABLE | MATERIALIZED VIEW | TABLE] my_catalog.my_schema.my_table
TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>'
)
Alleen voor beheerde tabellen in Unity Catalog kunt u ook de compatibiliteitsmodus inschakelen wanneer u een bestaande tabel wijzigt:
-- For existing managed tables
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>'
)
Het duurt maximaal één uur voordat een compatibiliteitsversie voor het eerst wordt gegenereerd. U kunt de tabel handmatig vernieuwen om te bevestigen dat deze werkt.
Opmerking
U moet de volledige driedelige tabelnaam (catalog.schema.table_name) opgeven. Voorbeeld: voor users.john.my_table is users de catalogus en john het schema.
Controleren of de compatibiliteitsmodus is ingeschakeld
Als u wilt controleren of de compatibiliteitsmodus is ingeschakeld voor uw tabel, controleert u of de delta.universalFormat.enabledFormats = 'compatibility' tabeleigenschap bestaat. U kunt deze eigenschap weergeven in de gebruikersinterface van Catalog Explorer op het tabblad Details voor uw tabel.
U kunt ook de volgende SQL-opdrachten uitvoeren in een notebook:
DESC DETAIL my_catalog.my_schema.my_table
DESC EXTENDED my_catalog.my_schema.my_table
Zoek naar deze eigenschappen in de uitvoer:
-
delta.universalFormat.enabledFormats: "compatibility"– Geeft aan dat de compatibiliteitsmodus is ingeschakeld -
delta.universalFormat.compatibility.location– Toont de locatie van de versie van de compatibiliteitsmodus
Vernieuwingsintervallen configureren
Voor beheerde tabellen in Unity Catalog kunt u configureren hoe vaak de versie van de compatibiliteitsmodus wordt vernieuwd door het vernieuwingsinterval in te stellen:
-- Evaluate whether a refresh is needed after every commit (fastest)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>',
'delta.universalFormat.compatibility.targetRefreshInterval' = '0 MINUTES'
)
-- Refresh hourly (default)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>',
'delta.universalFormat.compatibility.targetRefreshInterval' = '1 HOUR'
)
Het standaardvernieuwingsinterval is 1 HOUR. Het instellen van het vernieuwingsinterval onder 1 uur wordt niet aanbevolen en er worden geen vernieuwingen vaker uitgevoerd. De uitzondering is wanneer u het vernieuwingsinterval instelt op 0 MINUTES. In dit geval controleert Azure Databricks na elke commit op veranderingen en wordt indien nodig een vernieuwing geactiveerd.
Voor streamingtabellen en gerealiseerde weergaven is een vernieuwingsinterval niet vereist.
0 MINUTES is de standaardwaarde.
Opmerking
Wijzigingen die aanzienlijk van invloed zijn op vernieuwingstijden (zoals het wijzigen van de naam van kolommen of het inschakelen van typebreking) worden elk uur uitgevoerd, ongeacht het doelvernieuwingsinterval.
Handmatig vernieuwen
Een vernieuwing van de compatibiliteitsversie handmatig activeren:
REFRESH [TABLE | STREAMING TABLE | MATERIALIZED VIEW] my_catalog.my_schema.my_table SYNC UNIFORM
Handmatig vernieuwen is handig om te testen of de compatibiliteitsmodus correct werkt of om te garanderen dat uw compatibiliteitsversie up-to-datum vóór een volgende leesbewerking is. Wachten op automatische vernieuwingen kan echter rendabeler zijn.
Status van het genereren van gegevens en metagegevens bewaken
De compatibiliteitsmodus genereert automatisch en asynchroon gegevens en metagegevens. Voor beheerde tabellen van Unity Catalog vindt het genereren per uur plaats of op basis van het geconfigureerde vernieuwingsinterval. Voor streamingtabellen en gematerialiseerde weergaven vindt het genereren plaats na tabelupdates wanneer er nieuwe commits zijn.
Controleren of gegevens en metagegevens zijn gegenereerd:
Gebruik
DESCRIBE HISTORYdeze functie om de nieuwste versie van uw brontabel te vinden:DESC HISTORY my_catalog.my_schema.my_table
Met deze opdracht wordt de geschiedenis van vernieuwingen naar de compatibiliteitsmodus geretourneerd, waaronder de Delta Lake-versie en -tijdstempel. De bovenste rij bevat de nieuwste versie en tijdstempel.
Gebruik
DESCRIBE EXTENDEDdit om de bijbehorende versie van de compatibiliteitsmodus te vinden:DESC EXTENDED my_catalog.my_schema.my_table
Zoek naar velden onder Uniform Compatibility Information:
- Laatst vernieuwde versie: de Delta Lake-versie die voor het laatst is bijgewerkt met de compatibiliteitsmodus
- Laatst vernieuwd: de tijdstempel van de laatste vernieuwing
De compatibiliteitsmodus is actueel als de tabelversie overeenkomt met de versie in stap 1.
Gebruiken
DESC HISTORYvoor de compatibiliteitsversie zelf:DESC HISTORY delta.\`<compatibility_location>\`
Bekijk in Catalog Explorer de metagegevensvelden voor de compatibiliteitsversie. De compatibiliteitsmodus is actueel als de Delta Lake-versie overeenkomt met de versie die in stap 3 is gevonden.
Kosten controleren
Predictive Optimization verwerkt het rekencluster dat automatische vernieuwingen voor de compatibiliteitsmodus doet. Als u de gekoppelde kosten wilt weergeven, voert u een query uit op de systeemfactureringstabellen:
SELECT
DATE_TRUNC('DAY', start_time) AS day,
SUM(usage_quantity) AS dbus
FROM
system.storage.predictive_optimization_operations_history
WHERE
operation_type = "COMPATIBILITY_MODE_REFRESH"
GROUP BY 1
ORDER BY 1 DESC;
Deze query rapporteert alleen het gebruik voor automatische vernieuwingen. Kosten voor handmatige vernieuwingen zijn gekoppeld aan uw berekening en er is geen directe manier om deze kosten afzonderlijk bij te houden. Over het algemeen zijn de kosten van een handmatige trigger evenredig met de kosten van de eerste schrijfbewerking naar de oorspronkelijke tabel.
Ongebruikte gegevensbestanden verwijderen
Als u ongebruikte gegevensbestanden in de compatibiliteitsversie van uw tabel wilt verwijderen, gebruikt u VACUUM:
VACUUM delta.'<compatibility_mode_location_path>';
Als u het locatiepad voor de compatibiliteitsmodus wilt vinden, gebruikt u de DESCRIBE EXTENDED opdracht Controleren of de compatibiliteitsmodus is ingeschakeld. In de uitvoer is de waarde van delta.universalFormat.compatibility.location de locatie.
Compatibiliteitsversies van externe clients lezen
U kunt elke Delta Lake- of Iceberg-client gebruiken om gegevens te lezen uit compatibiliteitsversies. Zie hieronder voor voorbeelden voor Amazon Athene, Snowflake (Delta reader) en Fabric.
Amazon Athene
Maak in de Query-editor van Athene een externe tabel met de opgegeven locatie:
CREATE EXTERNAL TABLE <table_name> LOCATION '<compatibility_location>' TBLPROPERTIES ('table_type' = 'DELTA')Lees de tabel:
SELECT * FROM <table_name>
Snowflake Delta Lake-lezer
Maak opslagintegratie voor toegang tot de opslaglocatie (zie de documentatie van Snowflake).
Maak een externe tabel met delta lake-indeling:
CREATE OR REPLACE EXTERNAL TABLE <table_name> WITH LOCATION = @<my_location> FILE_FORMAT = (TYPE = PARQUET) TABLE_FORMAT = DELTA AUTO_REFRESH = false REFRESH_ON_CREATE = false;Vernieuw de tabel (automatisch vernieuwen wordt niet ondersteund voor delta lake-indeling in Snowflake):
ALTER EXTERNAL TABLE <table_name> REFRESH;Lees de tabel:
SELECT * FROM <table_name>;
Microsoft Fabric
Maak een Fabric-capaciteit, werkruimte en Synapse-notebook.
Maak een lakehouse met gegevens op de compatibele locatie.
Lees de bestanden als een Delta Lake-tabel:
spark.read.format("delta").load("Files/<path_to_data>")
Compatibiliteitsversies lezen van de Unity REST API
Tabellen waarvoor de compatibiliteitsmodus is ingeschakeld, kunnen worden gelezen op naam via de Unity REST API met speciale parameters. Voor streamingtabellen stelt u de volgende API-parameter in:
GET /api/2.1/unity-catalog/tables/{full_name}?read_streaming_table_as_managed=true
Stel voor gerealiseerde weergaven de volgende API-parameter in:
GET /api/2.1/unity-catalog/tables/{full_name}?read_materialized_view_as_managed=true
Compatibiliteitsversies lezen uit Iceberg REST-catalogus
Tabellen waarvoor de compatibiliteitsmodus is ingeschakeld, kunnen worden gelezen vanuit elke Iceberg-client met behulp van de Iceberg REST-catalogus. De compatibiliteitsmodus werkt automatisch voor zowel Delta Lake- als Iceberg-tabelindelingen.
Installatievereisten
- Externe gegevenstoegang inschakelen in de metastore.
- Verleen
EXTERNAL USE SCHEMArechten op het schema. - Maak een persoonlijk toegangstoken van Azure Databricks (PAT).
Apache Spark-configuratie
bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.0,org.apache.iceberg:iceberg-azure-bundle:1.8.0 \
--conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
--conf spark.sql.catalog.catalog_name=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.catalog_name.type=rest \
--conf spark.sql.catalog.catalog_name.uri=<workspace-url>/api/2.1/unity-catalog/iceberg-rest \
--conf spark.sql.catalog.catalog_name.token=<PAT> \
--conf spark.sql.catalog.catalog_name.warehouse=<uc-catalog-name>
Zie Iceberg-tabellen gebruiken met Apache Spark voor meer informatie.
Snowflake-configuratie
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-st/mv-name>';
Compatibiliteitsmodus uitschakelen
Als u de compatibiliteitsmodus wilt uitschakelen, schakelt u de bijbehorende tabeleigenschap uit:
-- For UC managed tables
ALTER TABLE my_table UNSET TBLPROPERTIES('delta.universalFormat.enabledFormats')
-- For streaming tables and materialized views
CREATE OR REPLACE [STREAMING TABLE | MATERIALIZED VIEW] my_table
TBLPROPERTIES('delta.universalFormat.enabledFormats' = '')
Waarschuwing
Als u de compatibiliteitsmodus niet instelt, wordt het genereren van gegevens en metagegevens onmiddellijk gestopt. Na 7 dagen worden de bijbehorende gegevens en metagegevens verwijderd. Binnen deze periode van 7 dagen kunt u de gegevens en metagegevens herstellen door de compatibiliteitsmodus opnieuw in te schakelen in dezelfde tabel.
Beperkingen
- Alleen-lezentoegang: de compatibiliteitsversie is een alleen-lezen-versie. U kunt niet schrijven naar de compatibiliteitsversie.
- Geen RLS/CLS-ondersteuning: u kunt de compatibiliteitsmodus niet inschakelen voor tabellen met Row-Level Beveiliging (RLS) of Column-Level Security (CLS).
- Er wordt geen naam voor partitiekolommen gewijzigd: hernoeming van partitiekolommen wordt niet ondersteund in tabellen waarvoor de compatibiliteitsmodus is ingeschakeld. Het wijzigen van de naam van gegevenskolommen wordt ondersteund.
-
Beperkte tabelfuncties: de volgende mogelijkheden zijn niet beschikbaar in de compatibiliteitsversie:
- Collatiekolommen
- Primaire sleutels
- Tijdreizen
- Gegevensfeed wijzigen
- Kolomnamen met speciale tekens (waarvan de naam wordt gewijzigd)