Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli włączyłeś zewnętrzny dostęp do danych w Unity Catalog, możesz dodać dostęp do danych zewnętrznych do widoków zarządzanych potokiem oraz samodzielnych zmaterializowanych widoków i tabel strumieniowych. Dzięki temu zewnętrzni klienci Delta i Iceberg mogą uzyskać dostęp do zestawów danych za pośrednictwem interfejsów API REST katalogów Unity Catalog i Iceberg, bez konieczności tworzenia pełnej kopii danych.
Dostęp do danych zewnętrznych jest dostępny dla zbiorów danych zarządzanych przez potoki Lakeflow oraz dla niezależnych widoków materializowanych i tabel strumieniowych.
Capabilities
Korzystanie z zewnętrznego dostępu do danych udostępnia te same dane dostępne w Azure Databricks dla widoków zarządzanych przez potok oraz samodzielnych zmaterializowanych widoków i tabel strumieniowych, bez tworzenia duplikatu danych. Zapewnia to następujące cechy wydajności i funkcjonalności:
- Brak wymaganej kopii danych: Dostęp zewnętrzny jest włączony bez duplikowania pełnego zestawu danych.
- Dostęp zewnętrzny przez interfejsy API: Odczytuj zmaterializowane widoki i tabele strumieniowe przy użyciu interfejsów API Delta Lake lub Iceberg.
- Spójność odczytu po zapisie: Zewnętrzni odbiorcy mogą uzyskać dostęp do aktualnych danych po zaktualizowaniu zbioru danych, co gwarantuje, że dane nie są nieaktualne. Aktualizacje są dostępne natychmiast po odświeżeniu.
- Obiekt pojedynczej tabeli: Zestawy danych są udostępniane zewnętrznie jako tabele zarządzane o tej samej nazwie co źródłowy zestaw danych w interfejsach API Unity Catalog.
- Niski koszt: Ponieważ pełny zestaw danych nie jest kopiowany, obciążenie związane z zapewnieniem dostępu zewnętrznego jest niskie.
Requirements
Wymagania dotyczące zestawów danych to:
- Unity Catalog: Tabele strumieniowe i widoki zmaterializowane muszą korzystać z Unity Catalog.
- Wersja środowiska Uruchomieniowego usługi Databricks: Musisz używać środowiska Databricks Runtime w wersji 17.3 lub nowszej.
- Domyślny tryb publikowania: Zewnętrzna czytelność jest obsługiwana tylko w domyślnym trybie publikowania. Aby korzystać z zewnętrznej czytelności, przejdź do domyślnego trybu publikowania. Funkcje zależne od zewnętrznych metadanych, takie jak CDF dla widoków materializowanych, będą działać w starszym trybie publikowania.
Wymagania dotyczące klientów są następujące:
- Wersja interfejsu API Delta: Klient musi obsługiwać interfejsy API Delta Lake w wersji 4.0.0 lub nowszej, w tym wektory usuwania, oraz musi używać interfejsów API katalogu Unity Catalog do uzyskiwania dostępu.
- Wersja interfejsu API Iceberg: Alternatywnie klient może uzyskać dostęp przy użyciu interfejsów API katalogu Iceberg, które obsługują specyfikację Iceberg v3.
-
Uprawnienia Unity Catalog: Podmiot odczytujący zbiory danych zewnętrznie musi mieć uprawnienie EXTERNAL USE SCHEMA do schematu oraz uprawnienie
SELECTdo tabeli.
Uwaga / Notatka
Jeśli klient nie obsługuje tych wymagań, możesz również użyć trybu zgodności, który obsługuje wszystkich klientów delty i góry lodowej, ale wymaga utworzenia pełnej kopii zestawu danych.
Jak włączyć dostęp dla zestawu danych
Istnieją dwa kroki, aby umożliwić zewnętrzny dostęp do zbioru danych.
Włącz zewnętrzne metadane za pomocą konfiguracji pipeline’u lub właściwości tabeli. Ustawienie na poziomie tabeli ma pierwszeństwo przed konfiguracją potoku, gdy zdefiniowano oba ustawienia, i jest obsługiwane zarówno w przypadku tabeli strumieniowej i widoku zmaterializowanego zarządzanych przez potok, jak i samodzielnych.
Konfiguracja potoku: Ustaw
pipelines.externalMetadata.enablednatrue, aby włączyć metadane zewnętrzne dla wszystkich zbiorów danych w potoku. Samodzielne widoki materializowane i tabele strumieniowe tworzone za pomocą Databricks SQL nie mają konfiguracji potoku; zamiast tego należy użyć właściwości tabeli.Interfejs użytkownika ustawień potoku
W ustawieniach pipeline wykonaj następujące kroki:
- Otwórz swój pipeline i kliknij Ustawienia.
- W obszarze Konfiguracja dodaj parę klucz-wartość: Klucz
pipelines.externalMetadata.enabled, Wartośćtrue. - Kliknij Zapisz.
Kod JSON konfiguracji potoku
W sekcji
configurationkodu JSON potoku dodaj:{ "configuration": { "pipelines.externalMetadata.enabled": "true" } }Własność tabeli: Dodaj następującą właściwość do tabeli strumieniowej lub definicji widoku materializowanego. Informacje na temat Lakeflow Connect Pipelines można znaleźć w sekcji Ustawianie właściwości tabeli Delta.
CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES('pipelines.externalMetadata.enabled' = 'true')
Po zapisaniu konfiguracji uruchom lub uruchom ponownie potok, aby zastosować zmiany:
- Potoki wyzwalane: Uruchom potok raz.
- Potoki ciągłe: Zatrzymaj i uruchom ponownie potok.
W przypadku samodzielnych obiektów Databricks SQL użyj
CREATE OR REPLACE MATERIALIZED VIEWlubCREATE OR REFRESH STREAMING TABLEz właściwością tabeli. Instrukcja create or refresh stosuje tę właściwość.Jeśli planujesz czytać zbiór danych za pomocą nowoczesnego klienta Iceberg, dodaj następujące właściwości UniForm Iceberg V3 oprócz zewnętrznej właściwości metadanych. Informacje na temat Lakeflow Connect Pipelines można znaleźć w sekcji Ustawianie właściwości tabeli Delta.
Majątek Użyj 'pipelines.externalMetadata.enabled' = 'true'Włącz dostęp zewnętrzny dla stołu. To ustawienie tabeli ma pierwszeństwo przed konfiguracją potoku przetwarzania, jeśli skonfigurowano oba ustawienia. 'delta.columnMapping.mode' = 'name'Mapowanie kolumn jest wymagane w Iceberg. 'delta.enableRowTracking' = 'true'Włącz śledzenie wierszy dla odczytów Iceberg. 'delta.universalFormat.enabledFormats' = 'iceberg'Włącz odczyt z Iceberg. 'delta.enableIcebergCompatV3' = 'true'Używaj Iceberg V3 do odczytów 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')W przypadku widoków materializowanych możesz zamiast tego użyć równoważnej
USING ICEBERGskładni.CREATE OR REFRESH MATERIALIZED VIEW tbl_name USING ICEBERGW przypadku zestawów danych zarządzanych przez potok użyj powyższych instrukcji aktualizacji potoku, aby zastosować właściwości Iceberg. Dla samodzielnych obiektów SQL Databricks ponownie uruchom definicję obiektu z zaktualizowanymi właściwościami. Użyj
CREATE OR REPLACE MATERIALIZED VIEW, aby utworzyć widok zmaterializowany, lubCREATE OR REFRESH STREAMING TABLE, aby utworzyć tabelę strumieniową. Aby zobaczyć właściwości Twojego zbioru danych, użyj instrukcji SQLDESCRIBE DETAILlubDESCRIBE EXTENDED.
Rozwiązywanie problemów z zewnętrznym dostępem do danych
Jeśli uważasz, że zewnętrzne metadane są przestarzałe, podmiot z uprawnieniami MODIFY w tabeli może ręcznie wywołać aktualizację metadanych w współdzielonym klastrze obliczeniowym przy użyciu Databricks Runtime 17.3 lub nowszego:
REPAIR TABLE <catalog>.<schema>.<table-name> SYNC METADATA;
Możesz sprawdzić obecność metadanych Iceberg w interfejsie Catalog Explorer na stronie szczegółów tabeli. Alternatywnie, wykonaj następujące polecenia w edytorze SQL lub w notatniku Azure Databricks:
DESCRIBE DETAIL <catalog>.<schema>.<table-name>;
DESCRIBE EXTENDED <catalog>.<schema>.<table-name>;
Aby uzyskać tabelę streamingową, porównaj wersję metadanych Iceberg z najnowszą wersją tabeli streamingowej. Porównanie wersji dla zmaterializowanych widoków nie jest jeszcze dostępne.
Odczytywanie danych z klientów zewnętrznych
Poniższe sekcje zawierają przykłady, jak czytać swój zbiór danych z różnych klientów i środowisk.
Szczegółowe informacje o konfiguracji znajdują się w sekcjach Delta client access i Iceberg client access.
Korzystanie z interfejsu API REST Unity z czytnikiem Delta dla Apache Spark
Użyj platformy Apache Spark™ w wersji 4.0 lub nowszej. Możesz pobrać z witryny https://spark.apache.org/downloads.html.
W zależności od dostawcy chmury uruchom następujące polecenie, aby otworzyć powłokę Spark SQL z Delta 4.0 i 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>W powłoce SQL możesz teraz uzyskać dostęp do swojego zestawu danych za pomocą Spark SQL. Przykład:
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Korzystanie z czytnika Snowflake Iceberg Reader
W systemie Snowflake możesz używać narzędzia Iceberg Reader. Wymaga to obsługi platformy Iceberg v3 w aplikacji Snowflake.
Skonfiguruj katalog REST Iceberg w 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>';Uzyskaj dostęp do swojego zbioru danych z Snowflake SQL.
ALTER ICEBERG TABLE my_table REFRESH; SELECT * FROM my_table;
Użyj katalogu REST Iceberg z czytnikiem Iceberg dla Spark
Użyj platformy Apache Spark™ w wersji 4.0 lub nowszej. Możesz pobrać z witryny https://spark.apache.org/downloads.html.
W AWS uruchom następujące polecenie, aby uruchomić powłokę Spark SQL z 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=falseUzyskiwanie dostępu do zestawu danych z poziomu usługi Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Migrowanie z trybu zgodności
Jeśli obecnie udostępniasz zestaw danych przy użyciu trybu zgodności, możesz przeprowadzić migrację do korzystania z dostępu do danych zewnętrznych.
- Włącz tę funkcję, wykonując kroki opisane w temacie Jak włączyć dostęp dla zestawu danych.
- Wyłącz tryb zgodności. Zobacz Wyłącz tryb zgodności
Limitations
Poniżej przedstawiono znane ograniczenia dotyczące dostępu do danych zewnętrznych w tabelach strumieniowych i widokach zmaterializowanych.
- Zapisy zewnętrzne: Zewnętrzne zapisy w zestawach danych potoku nie są obsługiwane.
- Dostęp oparty na ścieżce: Zewnętrzne moduły odczytujące, które wymagają dostępu opartego na ścieżce (odczytujące dane bezpośrednio z lokalizacji pamięci masowej, a nie przez interfejs API UC), nie są obsługiwane. Aby zapewnić obsługę dostępu opartego na ścieżkach, można użyć trybu zgodności, który obsługuje dostęp oparty na ścieżkach, ale wymaga pełnej kopii zestawu danych.
- Funkcje zabezpieczeń: Obsługa zabezpieczeń na poziomie wiersza lub maskowania na poziomie kolumny z odczytów zewnętrznych nie jest obsługiwana.
- Podróże w czasie:Podróże w czasie za pomocą tej funkcji nie są obsługiwane.
- Zatwierdzenia wykazu (beta):zatwierdzenia wykazu nie są zgodne z dostępem do danych zewnętrznych. Aby korzystać z zewnętrznego dostępu do danych w tabeli strumieniowej lub widoku materializowanym, najpierw należy wyłączyć zatwierdzenia katalogowe.
- Fabric: Odczyt z Microsoft Fabric nie jest obsługiwany.