Uwaga
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.
Na tej stronie opisano sposób konfigurowania federacji lakehouse w celu uruchamiania zapytań federacyjnych na danych usługi Snowflake, które nie są zarządzane przez usługę Azure Databricks. Aby dowiedzieć się więcej o federacji Lakehouse, zobacz Co to jest Federacja Lakehouse?
Aby połączyć się z bazą danych Snowflake przy użyciu Lakehouse Federation, należy utworzyć następujące elementy w metastore Unity Catalog w Azure Databricks:
- Połączenie z bazą danych Snowflake.
- katalog zagraniczny, który odzwierciedla bazę danych Snowflake w Unity Catalog, dzięki czemu można użyć składni zapytań Unity Catalog i narzędzi do zarządzania ładem danych, aby zarządzać dostępem użytkowników usługi Azure Databricks do bazy danych.
Na tej stronie opisano nawiązywanie połączenia z usługą Snowflake przy użyciu wbudowanej integracji OAuth Snowflake. Inne metody uwierzytelniania można znaleźć na następujących stronach:
- Microsoft Entra ID
- Token dostępu OAuth
- Klucz prywatny PEM
- Uwierzytelnianie podstawowe (nazwa użytkownika/hasło)
Zapytania federacyjne można uruchamiać w usłudze Snowflake przy użyciu federacji bazy danych lub federacji katalogu. Zobacz Federacja katalogów.
W architekturze federacji baz danych JDBC przekazuje zapytanie Unity Catalog do zewnętrznej bazy danych. Jest to idealne rozwiązanie do raportowania ad hoc lub prac nad dowodem koncepcji w Twoich potokach ETL.
W federacji katalogów zapytanie Unity Catalog jest uruchamiane bezpośrednio do magazynu plików. Takie podejście jest przydatne jako długoterminowy model hybrydowy lub do migracji przyrostowej bez potrzeby dostosowywania kodu dla organizacji, które muszą przechowywać niektóre dane w usłudze Snowflake wraz z danymi zarejestrowanymi w jednolitym katalogu Unity.
Federacja bazy danych
Przed rozpoczęciem
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy włączony dla Unity Catalog.
Wymagania dotyczące obliczeń:
- Łączność sieciowa od zasobu obliczeniowego do docelowych systemów baz danych. Zobacz Zalecenia dotyczące sieci dla usługi Lakehouse Federation.
- Środowisko obliczeniowe usługi Azure Databricks musi używać środowiska Databricks Runtime 13.3 LTS lub nowszego oraz standardowego trybu dostępu lub dedykowanego trybu dostępu .
- Magazyny SQL muszą być w wersji pro lub bezserwerowej i muszą używać wersji 2023.40 lub nowszej.
Wymagane uprawnienia:
- Aby utworzyć połączenie, musisz być administratorem metastore Unity Catalog lub użytkownikiem z uprawnieniami
CREATE CONNECTION
w metastore przypisanym do obszaru roboczego. - Aby utworzyć katalog zagraniczny, musisz mieć uprawnienie
CREATE CATALOG
w metastore i być właścicielem połączenia lub mieć uprawnieniaCREATE FOREIGN CATALOG
dla połączenia.
Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji dotyczącej zadań, która następuje.
Tworzenie integracji zabezpieczeń
W konsoli Snowflake uruchom polecenie CREATE SECURITY INTEGRATION
. Zastąp następujące wartości:
<integration-name>
: unikatowa nazwa integracji protokołu OAuth.<workspace-url>
: adres URL obszaru roboczego usługi Azure Databricks. Należy ustawićOAUTH_REDIRECT_URI
na wartośćhttps://<workspace-url>/login/oauth/snowflake.html
, gdzie<workspace-url>
jest unikatowym adresem URL obszaru roboczego usługi Azure Databricks, w którym zostanie utworzone połączenie Snowflake.<duration-in-seconds>
: czas odświeżania tokenów.Ważne
OAUTH_REFRESH_TOKEN_VALIDITY
jest domyślnie polem niestandardowym ustawionym na 90 dni. Po wygaśnięciu tokenu odświeżania należy ponownie uwierzytelnić połączenie. Ustaw pole na rozsądną długość czasu.
Na przykład:
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
Tworzenie połączenia
Połączenie określa ścieżkę i poświadczenia dostępu do zewnętrznego systemu bazodanowego. Aby utworzyć połączenie, możesz użyć Eksploratora wykazu lub polecenia CREATE CONNECTION
SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.
Uwaga
Do utworzenia połączenia można również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks. Zobacz POST /api/2.1/unity-catalog/connections i polecenia Unity Catalog.
Wymagane uprawnienia: administrator magazynu metadanych lub użytkownik z uprawnieniami CREATE CONNECTION
.
W obszarze roboczym usługi Azure Databricks kliknij
Wykaz.
Na górze okienka Katalog kliknij ikonę
Dodaj i wybierz pozycję Dodaj połączenie z menu.
Alternatywnie, na stronie Szybki dostęp kliknij przycisk Zewnętrzne dane >, przejdź do karty Połączenia, a następnie kliknij przycisk Utwórz połączenie.
Na stronie
Podstawy połączenia w kreatorzeKonfigurowanie połączenia , wprowadź nazwę połączenia przyjazną dla użytkownika. Wybierz typ połączenia dla Snowflake.
W polu Typ uwierzytelniania wybierz
OAuth
z menu rozwijanego.(Opcjonalnie) Dodaj komentarz.
Kliknij przycisk Dalej.
Wprowadź następujące szczegóły uwierzytelniania i połączenia dla magazynu Snowflake.
Host: na przykład
snowflake-demo.east-us-2.azure.snowflakecomputing.com
Port: na przykład
443
Użytkownik: na przykład
snowflake-user
Identyfikator klienta: w konsoli snowflake uruchom polecenie
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
, aby pobrać identyfikator klienta na potrzeby integracji zabezpieczeń.Klucz tajny klienta: w konsoli usługi Snowflake uruchom polecenie
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
, aby pobrać klucz tajny klienta na potrzeby integracji zabezpieczeń.Zakres OAuth:
refresh_token session:role:<role-name>
. Określ rolę Snowflake do użycia w<role-name>
.Zaloguj się przy użyciu usługi Snowflake: kliknij i zaloguj się do aplikacji Snowflake przy użyciu poświadczeń protokołu OAuth.
Po pomyślnym zalogowaniu zostaniesz ponownie skierowany do kreatora Konfigurowania połączenia.
Kliknij pozycję Utwórz połączenie.
Na stronie Podstawy katalogu wprowadź nazwę katalogu obcego. Wykaz obcy odzwierciedla bazę danych w zewnętrznym systemie danych, dzięki czemu można wykonywać zapytania o dostęp do danych w tej bazie danych i zarządzać nimi przy użyciu usług Azure Databricks i Unity Catalog.
(Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.
Kliknij Utwórz katalog.
Na stronie Access wybierz obszary robocze, w których użytkownicy mogą uzyskiwać dostęp do utworzonego katalogu. Możesz wybrać opcję Wszystkie obszary robocze mają dostęplub kliknij Przypisać do obszarów roboczych, wybierz obszary robocze, a następnie kliknij Przypisz.
Zmień właściciela , który będzie mógł zarządzać dostępem do wszystkich obiektów w katalogu. Zacznij wpisywać nazwę w polu tekstowym, a następnie kliknij element w wynikach wyszukiwania.
Przyznaj uprawnienia do katalogu. Kliknij Zezwól:
- Określ podmioty, które będą miały dostęp do obiektów w katalogu. Zacznij wpisywać nazwę w polu tekstowym, a następnie kliknij element w wynikach wyszukiwania.
- Wybierz ustawienia wstępne przywilejów, aby przyznać każdemu podmiotowi. Wszyscy użytkownicy konta domyślnie otrzymują
BROWSE
.- Wybierz Czytnik danych z menu rozwijanego, aby nadać
read
uprawnienia do obiektów w katalogu. - Wybierz pozycję Edytor danych z menu rozwijanego, aby przyznać
read
imodify
uprawnienia do obiektów w wykazie. - Ręcznie wybierz uprawnienia do udzielenia.
- Wybierz Czytnik danych z menu rozwijanego, aby nadać
- Kliknij przycisk Przyznaj.
Kliknij przycisk Dalej.
Na stronie Metadane określ pary klucz-wartość dla tagów. Aby uzyskać więcej informacji, zobacz Zastosuj tagi do obiektów zabezpieczalnych w Unity Catalog.
(Opcjonalnie) Dodaj komentarz.
Kliknij Zapisz.
Identyfikatory bazy danych z uwzględnieniem wielkości liter
Pole database
z katalogu obcego jest mapowane na identyfikator bazy danych Snowflake. Jeśli identyfikator bazy danych Snowflake nie jest wrażliwy na wielkość liter, wielkość liter używana w wykazie obcym <database-name>
zostanie zachowana. Jeśli jednak identyfikator bazy danych Snowflake jest wrażliwy na wielkość liter, należy umieścić katalog obcy <database-name>
w podwójnych cudzysłowach, aby zachować wielkość liter.
Na przykład:
database
jest konwertowany naDATABASE
"database"
jest konwertowany nadatabase
"database"""
jest konwertowany nadatabase"
Aby uniknąć podwójnego cudzysłowu, użyj innego podwójnego cudzysłowu.
"database""
powoduje błąd, ponieważ podwójny cudzysłów nie jest poprawnie zabezpieczony.
Aby uzyskać więcej informacji, zobacz wymagania dotyczące identyfikatora w dokumentacji usługi Snowflake.
Obsługiwane wypychania
Obsługiwane są następujące mechanizmy obniżania poziomu:
- Filtry
- Projekcje
- Ograniczenie
- Połączenia
- Agregacje (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Funkcje (funkcje ciągów, funkcje matematyczne, dane, czas i znacznik czasu oraz inne różne funkcje, takie jak Alias, Cast, SortOrder)
- Funkcje systemu Windows (DenseRank, Rank, RowNumber)
- Sortowanie
Mapowanie typu danych
Podczas odczytywania danych z usługi Snowflake do platformy Spark, typy danych są mapowane w następujący sposób:
Typ płatka śniegu | Typ Spark |
---|---|
dziesiętne, liczba, numeryczny | Typ dziesiętny |
bigint, byteint, int, integer, smallint, tinyint | Typ Integer |
float (zmienna zmiennoprzecinkowa), float4, float8 | FloatType |
podwójna, podwójna precyzja, rzeczywista | PodwójnyTyp |
znak, znak, ciąg, tekst, czas, varchar | TypCiągu |
binarny | Typ binarny |
typ logiczny (boolowski) | Typ boolowski |
data | Typ daty |
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | Typ Znacznika Czasu |
Ograniczenia federacji bazy danych
- Punkt końcowy usługi Snowflake OAuth musi być dostępny z adresów IP płaszczyzny sterowania usługi Azure Databricks. Zobacz Wychodzące z płaszczyzny sterowania Azure Databricks. Rozwiązanie Snowflake obsługuje konfigurowanie zasad sieciowych na poziomie integracji zabezpieczeń, co umożliwia korzystanie z oddzielnych zasad sieciowych, które umożliwiają bezpośrednią łączność z płaszczyzny sterowania usługi Azure Databricks do punktu końcowego OAuth na potrzeby autoryzacji.
- Opcje konfiguracji "Użyj serwera proxy," "Host serwera proxy," "Port serwera proxy" oraz roli Snowflake nie są obsługiwane. Określ rolę Snowflake w ramach zakresu OAuth.
Federacja katalogów
Zanim rozpoczniesz
Aby uruchamiać zapytania federacyjne w usłudze Snowflake przy użyciu federacji katalogu, należy spełnić następujące wymagania:
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy włączony dla Unity Catalog.
Wymagania dotyczące obliczeń:
- Łączność sieciowa od zasobu obliczeniowego do docelowych systemów baz danych. Zobacz Zalecenia dotyczące sieci dla usługi Lakehouse Federation.
- Środowisko obliczeniowe usługi Azure Databricks musi używać środowiska Databricks Runtime 13.3 LTS lub nowszego oraz standardowego trybu dostępu lub dedykowanego trybu dostępu .
- Magazyny SQL muszą być w wersji pro lub bezserwerowej i muszą używać wersji 2023.40 lub nowszej.
Wymagane uprawnienia:
- Aby utworzyć połączenie, musisz być administratorem metastore Unity Catalog lub użytkownikiem z uprawnieniami
CREATE CONNECTION
w metastore przypisanym do obszaru roboczego. - Aby utworzyć katalog zagraniczny, musisz mieć uprawnienie
CREATE CATALOG
w metastore i być właścicielem połączenia lub mieć uprawnieniaCREATE FOREIGN CATALOG
dla połączenia.
Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji dotyczącej zadań, która następuje.
- Użyj środowiska Databricks Runtime 16.4 LTS lub nowszego lub usługi Databricks SQL.
Konfigurowanie federacji katalogu
Kroki konfigurowania federacji katalogu są podobne do konfigurowania federacji bazy danych. Należy jednak również utworzyć dane uwierzytelniające do magazynu i lokalizację zewnętrzną dla ścieżek do tabel Apache Iceberg rejestrowanych w usłudze Snowflake.
Utwórz lokalizację zewnętrzną dla tabel Iceberg.
Należy skonfigurować lokalizację zewnętrzną w katalogu Unity, aby zarządzać dostępem do lokalizacji magazynu w chmurze, które przechowują tabele Iceberg zarejestrowane w bazie danych Snowflake. Lokalizacje zewnętrzne to obiekty podlegające zabezpieczeniu w katalogu Unity, które łączą poświadczenia magazynu z kontenerami w chmurze. Zobacz Poświadczenia magazynu i lokalizacje zewnętrzne.
Lokalizację zewnętrzną można utworzyć przy użyciu następujących interfejsów:
- SQL
- Eksplorator wykazu
Lokalizacja zewnętrzna zostanie określona jako autoryzowana ścieżka podczas konfiguracji katalogu zewnętrznego.
Utwórz połączenie z katalogiem Snowflake Horizon i utwórz wykaz obcy. Należy określić lokalizację w magazynie w chmurze, w której metadane będą przechowywane dla tabel Iceberg w tym katalogu.
Skonfigurowanie lokalizacji przechowywania w katalogu umożliwia odczytywanie tabel Iceberg w zagranicznym katalogu za pośrednictwem przechowywania obiektów. Odczytywanie lub zapisywanie w tabelach Iceberg za pośrednictwem protokołu JDBC nie będzie już dostępne (nie będzie to miało wpływu na tabele nie-Iceberg).
Należy również dodać autoryzowane ścieżki, ścieżki magazynu w chmurze, do których można uzyskać dostęp za pośrednictwem katalogu. Tylko tabele znajdujące się pod tymi ścieżkami można poddawać zapytaniom w katalogu federacyjnym. Ścieżki muszą być objęte lokalizacjami zewnętrznymi.
Ograniczenia federacji katalogu
Uruchamianie zapytań federacyjnych w usłudze Snowflake przy użyciu federacji katalogu ma następujące ograniczenia:
- Niektóre tabele góry lodowej można odczytywać tylko przy użyciu federacji bazy danych.
- Tabele z lokalizacjami niezgodnymi z identyfikatorem URI (zawierającymi znaki specjalne).
- Tabele z lokalizacją metadanych poza lokalizacją tabeli.
- Tabele z lokalizacjami, które mają nieobsługiwane schematy (obsługiwane są tylko
s3
,s3a
,s3n
,abfs
,abfss
,gs
,r2
,wasb
iwasbs
).
- Tabele o identycznych nazwach, ignorując wielkość liter, konfliktują. Pierwsza tabela do załadowania to ta, która zostanie wyświetlona.
- W przypadku platformy Azure tabele Snowflake Iceberg nie mogą znajdować się w lokalizacji głównej kontenera.
Zobacz Ograniczenia tabeli góry lodowej dotyczące ograniczeń związanych z górami lodowymi.
Określanie, czy zagraniczna tabela Snowflake używa katalogu lub federacji bazy danych
Obce tabele Snowflake, odczytane korzystając z federacji katalogów, będą wyświetlać format źródła Iceberg w eksploratorze katalogu. Tabele Iceberg odczytane przy użyciu federacji bazy danych będą wyświetlać format źródłowy Snowflake w eksploratorze katalogu.
Federacyjne katalogi Snowflake mogą zawierać zarówno wbudowane tabele Snowflake, jak i tabele Iceberg. Zapytania są wykonywane na tabelach w obu formatach magazynowania będą wykonywane przy użyciu federacji baz danych, która korzysta z usług obliczeniowych Snowflake.
Dodatkowe zasoby
Zapoznaj się z następującymi artykułami w dokumentacji usługi Snowflake: