Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du har aktiverat extern dataåtkomst till Unity Catalog kan du lägga till extern dataåtkomst till pipeline-hanterade och fristående materialiserade vyer och strömningstabeller. Detta gör det möjligt för externa Delta- och Iceberg-klienter att komma åt dina datauppsättningar via REST-API:erna för Unity Catalog och Iceberg-katalogen, utan att kräva en fullständig datakopia.
Extern dataåtkomst fungerar för dataset som hanteras av Lakeflow-pipelines och för fristående materialiserade vyer och strömningstabeller.
Capabilities
Att använda extern dataåtkomst ger åtkomst till samma data som är tillgängliga i Azure Databricks för pipelinehanterade och fristående materialiserade vyer och streamingtabeller, utan att skapa en kopia av data. Detta ger följande egenskaper för prestanda och funktioner:
- Ingen datakopiering krävs: Extern åtkomst aktiveras utan att den fullständiga datamängden dupliceras.
- Extern åtkomst via API:er: Läs materialiserade vyer och strömmande tabeller med hjälp av Delta Lake- eller Iceberg-API:er.
- Läs-efter-skrivning-konsistens: Externa läsare kan få åtkomst till uppdaterade data efter en uppdatering av datauppsättningen, vilket säkerställer att inga inaktuella data förekommer. Uppdateringar är tillgängliga omedelbart vid uppdatering.
- Objekt med en tabell: Datauppsättningar visas externt som hanterade tabeller med samma namn som källdatauppsättningen i API:erna för Unity Catalog.
- Låg kostnad: Eftersom den fullständiga datamängden inte kopieras är kostnaden för att tillhandahålla extern åtkomst låg.
Requirements
Kraven för dina datauppsättningar är:
- Unity-katalog: Dina strömmande tabeller och materialiserade vyer måste använda Unity Catalog.
- Databricks Runtime-version: Du måste använda Databricks Runtime 17.3 och senare.
- Standardpubliceringsläge: Extern läsbarhet stöds endast i standardpubliceringsläge. För att använda extern läsbarhet, migrera till standardpubliceringsläget. Funktioner som är beroende av externa metadata, till exempel CDF för materialiserade vyer, kommer att fungera i äldre publiceringsläge.
Kraven för dina klienter är:
- Delta API-version: Klienten måste ha stöd för Delta Lake API:er 4.0.0 eller senare, inklusive borttagningsvektorer, och måste använda Katalog-API:er för Unity Catalog för åtkomst.
- Isbergs-API-version: Alternativt kan klienten komma åt med isbergskatalog-API:er som stöder Iceberg v3-specifikationen.
-
Behörigheter för Unity-katalogen: Huvudkontot som läser datauppsättningarna externt måste ha USE SCHEMA extern behörighet för schemat och
SELECTbehörighet i tabellen.
Note
Om klienten inte stöder dessa krav kan du också använda kompatibilitetsläget, som stöder alla Delta- och Iceberg-klienter, men som kräver att du skapar en fullständig kopia av datamängden.
Så här aktiverar du åtkomst för en datauppsättning
Det finns två steg för att möjliggöra extern åtkomst för en datamängd.
Aktivera externa metadata genom att använda antingen pipelinekonfigurationen eller en tabellegenskap. Inställningen på tabellnivå har företräde framför pipelinekonfigurationen när båda är angivna och stöds för både pipelinehanterade och fristående streamingtabeller och materialiserade vyer.
Pipelinekonfiguration: Ställ
pipelines.externalMetadata.enabledin påtrueför att aktivera extern metadata för alla dataset i pipelinen. Fristående materialiserade vyer och strömningstabeller skapade med Databricks SQL har ingen pipeline-konfiguration; Använd istället en tabellegenskap.Användargränssnitt för pipelineinställningar
I pipelineinställningarna utför du följande steg:
- Öppna pipelinen och klicka på Inställningar.
- Under Konfiguration lägger du till ett nyckel/värde-par: Nyckel
pipelines.externalMetadata.enabled, Värdetrue. - Klicka på Spara.
JSON för pipelinekonfiguration
I avsnittet
configurationi din pipeline-JSON lägger du till:{ "configuration": { "pipelines.externalMetadata.enabled": "true" } }Tabellegenskap: Lägg till följande egenskap i streamingtabellen eller materialiserade vydefinitionen. För Lakeflow Connect Pipelines, se Set Delta table properties.
CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES('pipelines.externalMetadata.enabled' = 'true')
När du har sparat konfigurationen kör eller startar du om pipelinen för att tillämpa ändringarna:
- Utlösta pipelines: Kör pipelinen en gång.
- Kontinuerliga pipelines: Stoppa och starta om pipelinen.
För fristående Databricks SQL-objekt, använd
CREATE OR REPLACE MATERIALIZED VIEWellerCREATE OR REFRESH STREAMING TABLEmed tabellegenskapen. Create- eller refresh-satsen tillämpar egenskapen.Om du planerar att läsa datasetet med en modern Iceberg-klient, lägg till följande UniForm Iceberg V3-egenskaper utöver den externa metadata-egenskapen. För Lakeflow Connect Pipelines, se Set Delta table properties.
Property Användning 'pipelines.externalMetadata.enabled' = 'true'Aktivera extern åtkomst för tabellen. Denna tabellnivåinställning går före pipeline-konfigurationen när båda är satta. 'delta.columnMapping.mode' = 'name'Kolumnmappning krävs för Iceberg. 'delta.enableRowTracking' = 'true'Aktivera radspårning för Iceberg-läsningar. 'delta.universalFormat.enabledFormats' = 'iceberg'Aktivera Iceberg-läsning. 'delta.enableIcebergCompatV3' = 'true'Använd Iceberg V3 för läsning från 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')För materialiserade vyer kan du använda motsvarande
USING ICEBERGsyntax istället.CREATE OR REFRESH MATERIALIZED VIEW tbl_name USING ICEBERGFör datauppsättningar som hanteras via pipeline använder du instruktionerna ovan för att uppdatera pipelinen och tillämpa Iceberg-egenskaperna. För fristående Databricks SQL-objekt, kör objektdefinitionen igen med de uppdaterade egenskaperna. Använd
CREATE OR REPLACE MATERIALIZED VIEWför en materialiserad vy ellerCREATE OR REFRESH STREAMING TABLEför en strömningstabell. För att se egenskaperna för din datamängd använder du SQL-satsernaDESCRIBE DETAILellerDESCRIBE EXTENDED.
Felsökning av extern dataåtkomst
Om du tycker att den externa metadatan är föråldrad kan en principal med MODIFY privilegiet i tabellen manuellt trigga metadatauppdateringen på delad klusterberäkning med Databricks Runtime 17.3 eller högre:
REPAIR TABLE <catalog>.<schema>.<table-name> SYNC METADATA;
Du kan kontrollera förekomsten av Iceberg-metadata i Catalog Explorer-gränssnittet på tabellens detaljsida. Alternativt, kör följande kommandon i SQL-editorn eller en Azure Databricks-notebook:
DESCRIBE DETAIL <catalog>.<schema>.<table-name>;
DESCRIBE EXTENDED <catalog>.<schema>.<table-name>;
För en streamingtabell, jämför Iceberg-metadataversionen med den senaste versionen av streamingtabellen. Versionsjämförelse för materialiserade vyer är ännu inte tillgänglig.
Läsa data från externa klienter
Följande avsnitt ger exempel på hur du läser din datamängd från olika klienter och miljöer.
För installationsdetaljer, se Delta-klientåtkomst och Iceberg-klientåtkomst.
Använda Unity REST API med Spark Delta Reader
Använd Apache Spark™ version 4.0 eller senare. Du kan ladda ned från https://spark.apache.org/downloads.html.
Kör följande kommando baserat på molnleverantören för att starta ett Spark SQL-gränssnitt med Delta 4.0 och 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>Azure
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>Från SQL-gränssnittet kan du nu komma åt din datauppsättning med Spark SQL. Ett exempel:
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Använd den Snowflake Iceberg Reader
I Snowflake kan du använda Isbergsläsaren. Detta kräver stöd för Iceberg v3 i Snowflake.
Konfigurera Iceberg REST-katalogen i Snowflake.
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>';Åtkomst till din datamängd från Snowflake SQL.
ALTER ICEBERG TABLE my_table REFRESH; SELECT * FROM my_table;
Använda Iceberg REST-katalogen med Spark Iceberg-läsare
Använd Apache Spark™ version 4.0 eller senare. Du kan ladda ned från https://spark.apache.org/downloads.html.
I AWS kör du följande kommando för att starta ett Spark SQL-gränssnitt med 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=falseFå åtkomst till din datauppsättning från Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Migrera från kompatibilitetsläge
Om du för närvarande delar en datauppsättning med kompatibilitetsläge kan du migrera till att använda extern dataåtkomst.
- Aktivera den här funktionen genom att följa stegen i Så här aktiverar du åtkomst för en datauppsättning.
- Inaktivera kompatibilitetsläge. Se Inaktivera kompatibilitetsläge
Limitations
Följande är kända begränsningar med extern dataåtkomst för strömmande tabeller och materialiserade vyer.
- Externa skrivningar: Externa skrivningar till pipelinedatauppsättningar stöds inte.
- Path-Based Access: Externa läsare som kräver sökvägsbaserad åtkomst (läser direkt via en lagringsplats i stället för UC API-gränssnittet) stöds inte. För att stödja sökvägsbaserad åtkomst kan du använda kompatibilitetsläge, som stöder sökvägsbaserad åtkomst, men kräver en fullständig kopia av datamängden.
- Säkerhetsfunktioner: Stöd för säkerhet på radnivå eller maskering på kolumnnivå från externa läsningar stöds inte.
- Tidsresor:Tidsresor via denna funktion stöds inte.
- Katalogincheckningar (beta):Katalogincheckningar är inte kompatibla med extern dataåtkomst. För att använda åtkomst till externa data för en strömmande tabell eller en materialiserad vy måste du först inaktivera katalogincheckningar.
- Fabric: Läsning från Microsoft Fabric stöds inte.