Udostępnij za pomocą


Co to jest federacja zapytań?

W przypadku federacji zapytań, zapytania są przekazywane do obcej bazy danych przy użyciu interfejsów API JDBC. Zapytanie jest wykonywane zarówno w usłudze Databricks, jak i przy użyciu zdalnych obliczeń. Federacja zapytań jest używana dla źródeł, takich jak MySQL, PostgreSQL, BigQuery, Redshift, Teradata i nie tylko.

Diagram przeglądu federacji zapytań

Dlaczego warto używać federacji Lakehouse?

Koncepcja Lakehouse podkreśla centralne magazynowanie danych w celu zmniejszenia ich nadmiarowości i izolacji. Twoja organizacja może mieć wiele systemów danych w środowisku produkcyjnym i może być konieczne wykonywanie zapytań dotyczących danych w połączonych systemach z wielu powodów:

  • Raportowanie na żądanie.
  • Praca nad dowodem słuszności koncepcji.
  • Faza eksploracyjna nowych potoków lub raportów ETL.
  • Obsługiwanie obciążeń podczas migracji stopniowej.

W każdym z tych scenariuszy federacja zapytań pozwala na szybsze uzyskiwanie wglądu, ponieważ można wykonywać zapytania dotyczące danych w miejscu i unikać złożonego i czasochłonnego przetwarzania ETL.

Federacja zapytań jest przeznaczona dla przypadków użycia, gdy:

  • Nie chcesz pozyskiwać danych do usługi Azure Databricks.
  • Chcesz, aby zapytania korzystały z obliczeń w zewnętrznym systemie bazy danych.
  • Chcesz korzystać z zalet interfejsów katalogowych Unity Catalog i zarządzania danymi, w tym szczegółowej kontroli dostępu, śledzenia pochodzenia danych i wyszukiwania.

Federacja zapytań a program Lakeflow Connect

Federacja zapytań umożliwia wykonywanie zapytań dotyczących zewnętrznych źródeł danych bez przenoszenia danych. Usługa Databricks zaleca pozyskiwanie przy użyciu łączników zarządzanych, ponieważ są skalowane w celu uwzględnienia dużych ilości danych, zapytań o małych opóźnieniach i limitów interfejsu API innych firm. Jednak możesz chcieć wykonać zapytanie dotyczące danych bez ich przenoszenia. Jeśli masz wybór między zarządzanymi konektorami pobierania danych i federacją zapytań, wybierz federację zapytań na potrzeby raportowania ad hoc lub pracy nad dowodami koncepcji w potokach ETL.

Omówienie konfiguracji federacji zapytań

Aby udostępnić zestaw danych do wykonywania zapytań tylko do odczytu przy użyciu federacji Lakehouse, tworzysz następujące elementy:

  • Połączenie, zabezpieczalny obiekt w Unity Catalog, który określa ścieżkę i poświadczenia do dostępu do zewnętrznego systemu bazy danych.
  • Katalog zewnętrzny, zabezpieczany obiekt w katalogu Unity, który odzwierciedla bazę danych w zewnętrznym systemie danych, umożliwiający wykonywanie zapytań tylko do odczytu na tym systemie danych w obszarze roboczym Azure Databricks, z zarządzaniem dostępem przy użyciu katalogu Unity.

Obsługiwane źródła danych

Federacja zapytań obsługuje połączenia z następującymi źródłami:

Wymagania dotyczące połączenia

Wymagania dotyczące obszaru roboczego:

  • Obszar roboczy z dostępem do Unity Catalog.

Wymagania dotyczące obliczeń:

  • Łączność sieciowa pomiędzy zasobem obliczeniowym a docelowymi systemami baz danych. Zobacz Zalecenia dotyczące sieci dla 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 magazynu metadanych lub użytkownikiem z uprawnieniami CREATE CONNECTION w magazynie metadanych Unity Catalog dołączonym do obszaru roboczego.
  • Aby utworzyć katalog zagraniczny, musisz mieć uprawnienie CREATE CATALOG w metastore i być właścicielem połączenia lub mieć uprawnienia CREATE FOREIGN CATALOG dla połączenia.

Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji dotyczącej poszczególnych 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 oraz 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. Na górze okienka Katalog kliknij ikonę Dodaj lub plusDodaj i wybierz pozycję Dodaj połączenie z menu.

    Alternatywnie na stronie szybki dostęp do kliknij przycisk Zewnętrzne dane >, przejdź do karty połączenia, a następnie kliknij przycisk Utwórz połączenie.

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

  4. Wybierz typ połączenia (dostawca bazy danych, taki jak MySQL lub PostgreSQL).

  5. (Opcjonalnie) Dodaj komentarz.

  6. Kliknij przycisk Dalej.

  7. Wprowadź właściwości połączenia (takie jak informacje o hoście, ścieżka i poświadczenia dostępu).

    Każdy typ połączenia wymaga różnych informacji o połączeniu. Zapoznaj się z artykułem dotyczącym typu połączenia wymienionego w spisie treści po lewej stronie.

  8. Kliknij pozycję Utwórz połączenie.

  9. Wprowadź nazwę wykazu obcego.

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

  11. Kliknij pozycję Utwórz katalog.

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

  13. Zmień właściciela , który będzie mógł zarządzać dostępem do wszystkich obiektów w katalogu. Zacznij wpisywać nazwę podmiotu w polu tekstowym, a następnie kliknij ten podmiot w wynikach wyszukiwania.

  14. Nadaj przywileje w katalogu. Kliknij Zezwól:

    1. Określ podmioty, które będą miały dostęp do obiektów w katalogu. Zacznij wpisywać nazwę podmiotu w polu tekstowym, a następnie kliknij ten podmiot w wynikach wyszukiwania.
    2. 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 i modify uprawnienia do obiektów w wykazie.
      • Ręcznie wybierz uprawnienia do udzielenia.
    3. Kliknij Grant.
    4. Kliknij przycisk Dalej.
    5. 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.
    6. (Opcjonalnie) Dodaj komentarz.
    7. Kliknij przycisk Zapisz.

SQL

Uruchom następujące polecenie w notesie lub edytorze zapytań SQL. Ten przykład dotyczy połączeń z bazą danych PostgreSQL. Opcje różnią się od typu połączenia. Zapoznaj się z artykułem dotyczącym typu połączenia wymienionego w spisie treści po lewej stronie.

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

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

CREATE CONNECTION <connection-name> TYPE postgresql
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.

Aby uzyskać informacje na temat zarządzania istniejącymi połączeniami, zobacz Zarządzanie połączeniami dla Lakehouse Federation.

Utwórz katalog zagraniczny

Note

Jeśli używasz interfejsu użytkownika do utworzenia połączenia ze źródłem danych, uwzględnione jest tworzenie katalogu zewnętrznego 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. Możesz również użyć API Unity Catalog. Zobacz dokumentację referencyjną usługi Azure Databricks.

Metadane obcego katalogu są synchronizowane z Unity Catalog przy każdej interakcji z katalogiem. Aby sprawdzić mapowanie typów danych między Unity Catalogiem a źródłem danych, zapoznaj się z sekcją Mapowania typów danych w dokumentacji każdego źródła danych.

Wymagane uprawnienia:CREATE CATALOG uprawnienia do magazynu metadanych i właścicielstwo połączenia lub CREATE FOREIGN CATALOG uprawnienie 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 Wykaz kliknij ikonę Dodaj lub plus Ikona Dodajdane i wybierz pozycję Utwórz wykaz z menu.

    Alternatywnie na stronie Szybki dostęp kliknij na przycisk Wykazy, a następnie kliknij na 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 są opcjonalne. Zastąp wartości zastępcze:

  • <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. Nie jest to wymagane w przypadku bazy danych MySQL, która używa dwuwarstwowej przestrzeni nazw.
  • <external-catalog-name>: Databricks-to-Databricks tylko: nazwa katalogu w zewnętrznym obszarze roboczym Databricks, który jest odwzorowywany. Zobacz Tworzenie obcego katalogu.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Aby uzyskać informacje na temat zarządzania katalogami obcymi i pracy z nimi, zobacz Zarządzanie katalogami obcymi i praca z nimi.

Ładowanie danych z tabel obcych za pomocą zmaterializowanych widoków

Usługa Databricks zaleca ładowanie danych zewnętrznych przy użyciu federacji zapytań podczas tworzenia zmaterializowanych widoków. Zobacz zmaterializowane widoki.

W przypadku korzystania z federacji zapytań użytkownicy mogą odwoływać się do danych federacyjnych w następujący sposób:

CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;

Wyświetlanie zapytań federacyjnych generowanych przez system

Federacja zapytań tłumaczy instrukcje SQL usługi Databricks na instrukcje, które można wypchnąć do federacyjnego źródła danych. Aby wyświetlić wygenerowaną instrukcję SQL, kliknij węzeł skanowania obcego źródła danych na wykresie w widoku profilu zapytania lub uruchom instrukcję SQL EXPLAIN FORMATTED. Zobacz sekcję Obsługiwane wypychanie w dokumentacji każdego źródła danych, aby uzyskać pokrycie.

Limitations

  • Zapytania są tylko do odczytu.

    Jedynym wyjątkiem jest sytuacja, gdy federacja Lakehouse jest używana do zintegrowania starszego magazynu metadanych Hive w obszarze roboczym (federacja katalogu). W tym scenariuszu tabele obce są zapisywalne. Zobacz Co oznacza zapis do katalogu zagranicznego w federacyjnym magazynie metadanych Hive?.

  • Ograniczanie połączeń jest określane przy użyciu limitu współbieżnych zapytań SQL usługi Databricks. Nie ma żadnych ograniczeń dotyczących połączeń między magazynami. Zobacz logikę kolejkowania i skalowania automatycznego.

  • Tabele i schematy o nazwach, które są nieprawidłowe w Unity Catalog, nie są obsługiwane i są ignorowane przez Unity Catalog podczas tworzenia katalogu zewnętrznego. Zobacz listę reguł nazewnictwa i ograniczeń w temacie Ograniczenia.

  • Nazwy tabel i nazwy schematów są konwertowane na małe litery w Unity Catalog. Jeśli spowoduje to kolizje nazw, usługa Databricks nie może zagwarantować, który obiekt zostanie zaimportowany do wykazu obcego.

  • Dla każdej odwołanej tabeli obcej, Databricks planuje zapytanie podrzędne w systemie zdalnym, aby zwrócić podzbiór danych z tej tabeli, a następnie zwraca wynik do jednego zadania wykonawczego Databricks w jednym strumieniu. Jeśli zestaw wyników jest zbyt duży, wykonawca może mieć problemy z brakiem pamięci.

  • Tryb dedykowanego dostępu (dawniej tryb dostępu pojedynczego użytkownika) jest dostępny tylko dla użytkowników, którzy są właścicielami połączenia.

  • Federacja Lakehouse nie może zarządzać jako część federacji tabelami zewnętrznymi z identyfikatorami rozróżniającymi wielkość liter dla połączeń Azure Synapse lub Redshift.

Przydziały zasobów

Usługa Azure Databricks wymusza kwoty zasobów dla wszystkich obiektów, które można zabezpieczyć w Unity Catalog. Te limity przydziału są wymienione w temacie Limity zasobów. Katalogi obce i wszystkie zawarte w nich obiekty są uwzględniane w całkowitym użyciu limitu przydziału.

Jeśli spodziewasz się przekroczyć te limity zasobów, skontaktuj się z zespołem konta usługi Azure Databricks.

Można monitorować zużycie limitu przydziałów za pomocą zasobów API Unity Catalog. Zobacz Monitorowanie użycia przydziałów zasobów w Unity Catalog.

Dodatkowe zasoby