Udostępnij za pośrednictwem


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ć uprawnienie CREATE 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, aby https://<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

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę CatalogCatalog.

  2. W górnej części okienka Catalog kliknij ikonę Dodaj lub plusIkona 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.

  3. Wprowadź przyjazną dla użytkownika nazwę połączenia.

  4. Typ połączenia SelectSnowflake.

  5. Wprowadź następujące właściwości połączenia dla magazynu Snowflake.

    • typ uwierzytelniania: OAuth, OAuth access token, klucz prywatny PEM lub Username 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 uruchom SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>'), aby uzyskać identyfikator klienta dla integracji zabezpieczeń.
    • (OAuth): Klucz tajny klienta: w konsoli usługi Snowflake uruchom SELECT 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ład password123
    • (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.

  6. (Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.

  7. (Opcjonalnie) Dodaj komentarz.

  8. 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

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę CatalogCatalog, aby otworzyć eksploratora Catalog.

  2. W górnej części okienka Catalog kliknij ikonę Dodaj lub plusIkona Dodaj i selectDodaj catalog z menu.

    Alternatywnie na stronie Szybki dostęp kliknij przycisk Catalogs, a następnie kliknij przycisk Utwórz catalog.

  3. 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 na DATABASE

  • "database" jest konwertowany na database

  • "database""" jest konwertowany na database"

    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: