Uruchamianie zapytań federacyjnych w usłudze Snowflake
W tym artykule opisano sposób set federacji usługi 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 nawiązać połączenie z bazą danych Snowflake przy użyciu usługi Lakehouse Federation, należy utworzyć następujące elementy w magazynie metadanych usługi Azure Databricks Unity Catalog:
- Połączenie z bazą danych Snowflake.
- Obce catalog, które odwzorowują bazę danych Snowflake w środowisku Unity Catalog, co pozwala na użycie składni zapytań Unity Catalog oraz narzędzi do zarządzania ładem danych w celu kontrolowania dostępu użytkowników usługi Azure Databricks do bazy danych.
Zanim rozpoczniesz
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy jest włączony dla środowiska 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 w wersji 13.3 LTS lub nowszej oraz trybu dostępu współdzielonego lub jednoużytkownikowego.
- 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 lub użytkownikiem z uprawnieniami
CREATE CONNECTION
w metastore Catalog Unity dołączonym do obszaru roboczego. - Aby utworzyć zagraniczną catalog, musisz mieć uprawnienie
CREATE CATALOG
w magazynie metadanych i być właścicielem połączenia lub mieć uprawnienieCREATE FOREIGN CATALOG
do połączenia.
Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji opartej na zadaniach.
- Jeśli planujesz uwierzytelnić się przy użyciu protokołu OAuth, utwórz integrację zabezpieczeń w konsoli usługi Snowflake.
- Jeśli planujesz uwierzytelnienie przy użyciu tokenu dostępu OAuth, musisz również zażądać tokenu dostępu.
(Opcjonalnie) Tworzenie integracji zabezpieczeń w konsoli usługi Snowflake
Jeśli chcesz uwierzytelnić się przy użyciu protokołu OAuth, wykonaj ten krok przed utworzeniem połączenia usługi Snowflake. Aby zamiast tego uwierzytelnić się przy użyciu nazwy użytkownika i hasła, pomiń tę sekcję.
Uwaga
Obsługiwana jest tylko wbudowana integracja protokołu OAuth firmy Snowflake. Zewnętrzne integracje OAuth, takie jak Okta lub Microsoft Entra ID, nie są obsługiwane.
W konsoli snowflake uruchom polecenie CREATE SECURITY INTEGRATION
. Zastąp następujące values:
<integration-name>
: unikatowa nazwa integracji protokołu OAuth.<workspace-url>
: adres URL obszaru roboczego usługi Azure Databricks. Musisz setOAUTH_REDIRECT_URI
, abyhttps://<workspace-url>/login/oauth/snowflake.html
, where<workspace-url>
jest unikatowym adresem URL dla obszaru roboczego Azure Databricks where, w którym utworzysz połączenie Snowflake.<duration-in-seconds>
: okres czasu dla refresh tokenów.Ważne
OAUTH_REFRESH_TOKEN_VALIDITY
jest polem niestandardowym, które domyślnie jest ustawione na set do 90 dni. Po wygaśnięciu tokenu refresh należy ponownie uwierzytelnić połączenie. Set pole do ustawienia rozsądnego czasu.
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;
(Opcjonalnie) Żądanie tokenu dostępu OAuth
Postępuj zgodnie z How To: Generate i użyj tokenu OAuth, korzystając z OAuth Snowflake dla niestandardowych klientów w bazie wiedzy Snowflake.
Tworzenie połączenia
Połączenie określa ścieżkę i credentials na potrzeby uzyskiwania dostępu do zewnętrznego systemu bazy danych. Aby utworzyć połączenie, możesz użyć eksploratora Catalog 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
.
Eksplorator Catalog
W obszarze roboczym usługi Azure Databricks kliknij ikonę Catalog.
W górnej części okienka Catalog kliknij ikonę Ikona Dodaj i selectDodaj połączenie z menu.
Alternatywnie na stronie Szybki dostęp kliknij przycisk Zewnętrzne dane >, przejdź do karty Connections, a następnie kliknij Utwórz połączenie.
Wprowadź przyjazną dla użytkownika nazwę połączenia.
Typ połączenia SelectSnowflake.
Wprowadź następujące właściwości połączenia dla magazynu Snowflake.
-
typ uwierzytelniania:
OAuth
,OAuth access token
, klucz prywatny PEM lubUsername and password
-
Host: na przykład
snowflake-demo.east-us-2.azure.snowflakecomputing.com
-
Port: na przykład
443
-
Magazyn Snowflake: na przykład
my-snowflake-warehouse
-
Użytkownik: na przykład
snowflake-user
- (
OAuth
) identyfikator klienta: w konsoli Snowflake uruchomSELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
, aby uzyskać identyfikator klienta dla integracji zabezpieczeń. - (
OAuth
): Klucz tajny klienta: w konsoli usługi Snowflake uruchomSELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
, aby pobrać klucz tajny klienta na potrzeby integracji zabezpieczeń. - (
OAuth
) Zakres klienta:refresh_token session:role:<role-name>
. Określ rolę Snowflake do użycia w pliku<role-name>
. - (
Username and password
) hasło: na przykładpassword123
- (
OAuth access token
) token dostępu: token dostępu z (opcjonalnie) Zażądaj tokenu dostępu OAuth. - (
OAuth access token
) Wygasa w sekundach: czas wygaśnięcia (w sekundach) tokenu dostępu z (opcjonalnie) Zażądaj tokenu dostępu OAuth (expires_in
). - (
PEM Private Key
) klucz prywatny PEM: klucz prywatny z pary kluczy RSA w formacie HEX64. - (
PEM Private Key
) Wygasa w sekundach: czas wygaśnięcia (w sekundach) połączenia z kluczem prywatnym.
(OAuth) Zostanie wyświetlony monit o zalogowanie się do aplikacji Snowflake przy użyciu protokołu OAuth credentials.
-
typ uwierzytelniania:
(Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.
(Opcjonalnie) Dodaj komentarz.
Kliknij pozycję Utwórz.
SQL
Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user '<user>',
password '<password>'
);
Zalecamy używanie wpisów tajnych usługi Azure Databricks zamiast ciągów w postaci zwykłego tekstu w przypadku poufnych values, takich jak credentials. Na przykład:
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Aby uzyskać informacje na temat konfigurowania wpisów tajnych, zobacz Zarządzanie wpisami tajnymi.
Stwórz obcy catalog
Zagraniczny catalog odzwierciedla bazę danych w zewnętrznym systemie danych, dzięki czemu można wykonywać zapytania i zarządzać dostępem do danych w tej bazie danych przy użyciu usług Azure Databricks i Unity Catalog. Aby utworzyć obce catalog, należy użyć połączenia ze źródłem danych, które zostało już zdefiniowane.
Aby utworzyć obce catalog, możesz użyć Eksploratora Catalog lub polecenia SQL CREATE FOREIGN CATALOG
w notesie usługi Azure Databricks albo w edytorze zapytań SQL.
Uwaga
Możesz również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks, aby utworzyć catalog. Zobacz POST /api/2.1/unity-catalog/catalogs i polecenia Unity Catalog.
Wymagane uprawnienia:CREATE CATALOG
uprawnienie do magazynu metadanych i własność połączenia lub CREATE FOREIGN CATALOG
uprawnienia do połączenia.
Eksplorator Catalog
W obszarze roboczym usługi Azure Databricks kliknij ikonę Catalog, aby otworzyć eksploratora Catalog.
W górnej części okienka Catalog kliknij ikonę Ikona Dodaj i selectDodaj catalog z menu.
Alternatywnie na stronie Szybki dostęp kliknij przycisk Catalogs, a następnie kliknij przycisk Utwórz catalog.
Postępuj zgodnie z instrukcjami dotyczącymi tworzenia zewnętrznego catalogs w Create catalogs.
SQL
Uruchom następujące polecenie SQL w notesie lub edytorze zapytań SQL. Elementy w nawiasach kwadratowych są opcjonalne. Zastąp symbol zastępczy values:
-
<catalog-name>
: nazwa catalog w usłudze Azure Databricks. -
<connection-name>
: obiekt połączenia określający źródło danych, ścieżkę i dostęp credentials. -
<database-name>
: nazwa bazy danych, którą chcesz dublować jako catalog w usłudze Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Identyfikatory bazy danych z uwzględnieniem wielkości liter
Pole database
obcej catalog odwzorowuje się do bazy danych Snowflake identifier. Jeśli baza danych Snowflake identifier nie rozróżnia wielkości liter, wielkość liter używana w obcej catalog<database-name>
jest zachowywana. Jeśli jednak w bazie danych Snowflake identifier jest uwzględniana wielkość liter, należy umieścić zewnętrzne catalog<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 wystąpienie błędu, ponieważ podwójny cudzysłów nie jest poprawnie uniknięta.
Aby uzyskać więcej informacji, zobacz Identifier wymagania w dokumentacji usługi Snowflake.
Obsługiwane wypychania
Obsługiwane są następujące wypychania:
- Filtry
- Projekcje
- Limit
- Sprzężenia
- 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 z usługi Snowflake do platformy Spark typy danych są mapowe w następujący sposób:
Typ płatka śniegu | Typ platformy Spark |
---|---|
dziesiętne, liczbowe, liczbowe | Typ dziesiętny |
bigint, byteint, int, integer, smallint, tinyint | Typ liczby całkowitej |
float, float4, float8 | FloatType |
podwójna precyzja, podwójna precyzja, rzeczywista | DoubleType |
znak, znak, ciąg, tekst, czas, varchar | StringType |
dane binarne | BinaryType |
boolean | Typ logiczny |
data | Typ daty |
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | TimestampType |
Ograniczenia uwierzytelniania OAuth
Poniżej przedstawiono ograniczenia obsługi protokołu OAuth:
- Punkt końcowy usługi Snowflake OAuth musi być dostępny z adresów IP płaszczyzny sterowania usługi Databricks. Zobacz Wychodzący z płaszczyzny sterowania usługi 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 Databricks do punktu końcowego OAuth na potrzeby autoryzacji.
- Opcje konfiguracji roli Serwer proxy, Host serwera proxy, Port proxy i Snowflake nie są obsługiwane. Określ rolę Snowflake w ramach zakresu OAuth.
Dodatkowe zasoby
Zapoznaj się z następującymi artykułami w dokumentacji usługi Snowflake: