Uruchamianie zapytań federacyjnych w usłudze Microsoft Azure Synapse

W tym artykule opisano sposób konfigurowania usługi Lakehouse Federation w celu uruchamiania zapytań federacyjnych na danych usługi Azure Synapse (SQL Data Warehouse), które nie są zarządzane przez usługę Azure Databricks. Aby dowiedzieć się więcej o Lakehouse Federation, zobacz Łączenie z zewnętrznymi bazami danych i katalogami.

Aby nawiązać połączenie z bazą danych Azure Synapse (SQL Data Warehouse) przy użyciu Lakehouse Federation, należy utworzyć następujące elementy w metasklepie Unity Catalog w Azure Databricks:

  • Połączenie z bazą danych usługi Azure Synapse (SQL Data Warehouse).
  • katalog zewnętrzny, który odzwierciedla bazę danych usługi Azure Synapse (SQL Data Warehouse) w Unity Catalog, dzięki czemu można użyć składni zapytań Unity Catalog i narzędzi do zapewniania ładu danych w celu zarządzania dostępem użytkowników usługi Azure Databricks do bazy danych.

Zanim rozpoczniesz

Wymagania dotyczące obszaru roboczego:

  • Obszar roboczy włączony dla Unity Catalog. Obszary robocze utworzone po 9 listopada 2023 r. są automatycznie włączane dla Unity Catalog, w tym automatyczne aprowizowanie metastore. Nie musisz tworzyć metastore'u ręcznie, chyba że obszar roboczy został stworzony przed automatycznym włączeniem i nie został włączony dla Unity Catalog. Zobacz Rozpocznij pracę z 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'u lub użytkownikiem z uprawnieniami CREATE CONNECTION w metastore Katalogu Unity dołączonym do obszaru roboczego. W obszarach roboczych, które zostały automatycznie włączone do katalogu Unity, administratorzy obszaru roboczego mają domyślnie uprawnienie CREATE CONNECTION.
  • Aby utworzyć katalog obcy, musisz mieć uprawnienie CREATE CATALOG w magazynie metadanych i być właścicielem połączenia lub mieć uprawnienie CREATE FOREIGN CATALOG w połączeniu. W obszarach roboczych, które zostały automatycznie włączone do katalogu Unity, administratorzy obszaru roboczego mają domyślnie uprawnienie CREATE CATALOG.

Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji odnoszącej się do zadań.

Tworzenie połączenia

Połączenie określa ścieżkę dostępu i dane uwierzytelniające 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.

Note

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 wykazu

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę Dane.Wykaz.
  2. W górnej części okienka Wykaz kliknij ikonę Dodaj lub plusIkona Dodaj i wybierz pozycję Utwórz połączenie z menu.
  3. Na stronie Podstawy połączenia w kreatorze Konfigurowanie połączenia wprowadź przyjazną dla użytkownika nazwę połączenia .
  4. Wybierz typ połączenia SQLDW.
  5. (Opcjonalnie) Dodaj komentarz.
  6. Kliknij przycisk Dalej.
  7. Na stronie Uwierzytelnianie wprowadź następujące właściwości połączenia dla wystąpienia usługi Azure Synapse:
    • Host: na przykład sqldws-demo.database.windows.net.
    • Port: na przykład 1433
    • User
    • Password
    • certyfikat serwera zaufania: jest to domyślnie zaznaczone. Po wybraniu warstwa transportu używa protokołu SSL do szyfrowania kanału i pomija łańcuch certyfikatów w celu zweryfikowania zaufania. Pozostaw to ustawienie domyślne, chyba że istnieje określona potrzeba obejścia weryfikacji zaufania.
  8. Kliknij pozycję Utwórz połączenie.
  9. Na stronie Catalog basics 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.
  10. (Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.
  11. Kliknij Utwórz katalog.
  12. Na stronie Access wybierz obszary robocze, w których użytkownicy mogą uzyskiwać dostęp do utworzonego katalogu. Możesz wybrać pozycję Wszystkie obszary robocze mają dostęplub kliknij Przypisz do obszarów roboczych, wybierz obszary robocze, a następnie kliknij Przypisz.
  13. Zmień właściciela , który będzie mógł zarządzać dostępem do wszystkich obiektów w wykazie. Zacznij wpisywać nazwę podmiotu w polu tekstowym, a następnie kliknij ten podmiot w wynikach wyszukiwania.
  14. Udziel uprawnień na katalogu. Kliknij Udziel:
    1. Określ główne podmioty, które będą miały dostęp do obiektów w wykazie. Zacznij wpisywać nazwę podmiotu w polu tekstowym, a następnie kliknij ten podmiot w wynikach wyszukiwania.
    2. Wybierz ustawienia wstępne uprawnień, aby przyznać je każdemu podmiotowi. Wszyscy użytkownicy konta domyślnie otrzymują BROWSE.
      • Wybierz Czytnik danych z rozwijanej listy, aby nadać uprawnienia read dla obiektów w katalogu.
      • Wybierz pozycję Edytor danych z menu rozwijanego, aby przyznać read i modify uprawnienia do obiektów w wykazie.
      • Ręcznie wybierz uprawnienia do udzielenia.
    3. Kliknij Grant.
  15. Kliknij przycisk Dalej.
  16. Na stronie Metadane określ pary klucz-wartość tagów. Aby uzyskać więcej informacji, zobacz Zastosuj tagi do obiektów zabezpieczalnych w Unity Catalog.
  17. (Opcjonalnie) Dodaj komentarz.
  18. Kliknij przycisk Zapisz.

SQL

Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks.

CREATE CONNECTION <connection-name> TYPE sqldw
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Zalecamy używanie tajnych danych usługi Azure Databricks zamiast ciągów zwykłego tekstu dla poufnych wartości, takich jak poświadczenia. Przykład:

CREATE CONNECTION <connection-name> TYPE sqldw
OPTIONS (
  host '<hostname>',
  port '<port>',
  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.

Tworzenie wykazu obcego

Note

Jeśli używasz interfejsu użytkownika do utworzenia połączenia ze źródłem danych, tworzenie obcego katalogu zostanie uwzględnione i możesz pominąć ten krok.

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. Aby utworzyć wykaz obcy, należy użyć połączenia ze źródłem danych, które zostało już zdefiniowane.

Aby utworzyć wykaz obcy, możesz użyć Eksploratora wykazu lub polecenia CREATE FOREIGN CATALOG SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL. Do utworzenia katalogu 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/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 wykazu

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę Dane.Wykaz do otwierania Eksploratora wykazu.

  2. W górnej części okienka katalogu kliknij ikonę Dodaj lub plusIkona Dodaj i wybierz Dodaj wykaz z menu.

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

  3. Postępuj zgodnie z instrukcjami dotyczącymi tworzenia katalogów obcych w Tworzenie katalogów.

SQL

Uruchom następujące polecenie SQL w notesie lub edytorze zapytań SQL. Elementy w nawiasach kwadratowych są opcjonalne. Zastąp wartości symboli zastępczych:

  • <catalog-name>: nazwa wykazu w usłudze Azure Databricks.
  • <connection-name>: obiekt połączenia określający źródło danych, ścieżkę i poświadczenia dostępu.
  • <database-name>: nazwa bazy danych, którą chcesz dublować jako wykaz w usłudze Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Obsługiwane funkcje wypychania

W poniższej tabeli wymieniono operacje pushdown obsługiwane przez Azure Synapse (SQL Data Warehouse) wraz z wymaganiami obliczeniowymi dla każdej z nich.

Wypychanie Obsługiwane zasoby obliczeniowe
Filters Obsługiwane wszystkie komputery
Zawiera, Rozpoczyna się od, Kończy się na Obsługiwane wszystkie komputery
Limit Obsługiwane wszystkie komputery
Funkcje matematyczne
SIN, COS, FLOOR, ABS (po włączeniu ANSI) — częściowa obsługa, tylko w wyrażeniach filtrujących
Obsługiwane wszystkie komputery
Różne funkcje
Rzutowanie — obsługiwane częściowo, tylko dla wyrażeń filtru
Obsługiwane wszystkie komputery
Projections Obsługiwane wszystkie komputery
Funkcje łańcuchów znakowych
(UPPER, LOWER, CONCAT, TRIM — częściowa obsługa, tylko wyrażenia filtru)
Obsługiwane wszystkie komputery
Aggregates
(Średnia, Liczba, Max, Min, Odchylenie standardowe populacji, Odchylenie standardowe próby, Suma, Wariancja populacji, Wariancja próby)
Obsługiwane wszystkie komputery
Operatory arytmetyczne
(na przykład +, -, *, %, /) — nieobsługiwane, jeśli usługa ANSI jest wyłączona
Obsługiwane wszystkie komputery
Operatory Boolowskie
(na przykład =, <=>, <, <=, >, >=)
Obsługiwane wszystkie komputery
Operatory bitowe
(&, |, ^ i ~)
Obsługiwane wszystkie komputery
Sortowanie, gdy jest używane z limitem Obsługiwane wszystkie komputery
Joins Nieobsługiwane Nieobsługiwane
Funkcje okna Nieobsługiwane Nieobsługiwane

Mapowanie typu danych

Podczas odczytywania z Synapse / SQL Data Warehouse do platformy Spark typy danych są mapowane w następujący sposób:

Typ usługi Synapse Typ Spark
decimal, , money, , numericsmallmoney DecimalType
smallint ShortType
tinyint ByteType
int IntegerType
bigint LongType
real FloatType
float DoubleType
char, nchar, ntext, nvarchar, , text, uniqueidentifier, varcharxml StringType
binary, geography, , geometry, image, timestamp, , udtvarbinary BinaryType
bit BooleanType
date DateType
datetime, , datetime2, , smalldatetimetime TimestampType/TimestampNTZType*

*Podczas odczytu z usługi Synapse / SQL Data Warehouse (SQLDW) usługa SQLDW datetimes jest mapowana na platformę Spark TimestampType , jeśli preferTimestampNTZ = false (ustawienie domyślne). Funkcja SQLDW datetimes jest mapowana na TimestampNTZType jeśli preferTimestampNTZ = true.