Udostępnij za pośrednictwem


Uruchamianie zapytań federacyjnych w usłudze PostgreSQL

W tym artykule opisano, jak skonfigurować Lakehouse Federation, aby uruchamiać zapytania federacyjne na danych PostgreSQL, które nie są zarządzane przez Azure Databricks. Aby dowiedzieć się więcej o federacji Lakehouse, zobacz Co to jest Federacja Lakehouse?.

Aby połączyć się z bazą danych PostgreSQL za pomocą Lakehouse Federation i wykonywać zapytania, należy utworzyć następujące elementy w katalogu Unity w Azure Databricks:

  • Połączenie z uruchomionymi zapytaniami w bazie danych PostgreSQL.
  • katalog obcy, który powiela zapytania wykonywane w bazie danych PostgreSQL w katalogu Unity, dzięki czemu można użyć składni zapytań w katalogu Unity oraz narzędzi ładu danych, pozwalając na zarządzanie dostępem użytkowników usługi Azure Databricks do bazy danych.

Zanim rozpoczniesz

Wymagania dotyczące obszaru roboczego:

  • Obszar roboczy z dostępem do Unity Catalog.

Wymagania dotyczące obliczeń:

  • Łączność sieciowa z zasobu obliczeniowego z docelowymi systemami 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 i trybu dostępu udostępnionego lub pojedynczego użytkownika .
  • 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 związanym z obszarem roboczym.
  • Aby utworzyć wykaz obcy, musisz mieć uprawnienie CREATE CATALOG w magazynie metadanych oraz być właścicielem połączenia lub mieć uprawnienie CREATE FOREIGN CATALOG na połączeniu.

Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji opartej na zadaniach.

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 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ę katalogu Catalog.

  2. W górnej części okienka katalogu kliknij ikonę Dodaj lub plus,Ikona 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.

  3. Na stronie Podstawy połączenia kreatora Konfigurowanie połączenia wprowadź przyjazną dla użytkownika nazwę połączenia .

  4. Wybierz typ połączenia dla PostgreSQL.

  5. (Opcjonalnie) Dodaj komentarz.

  6. Kliknij przycisk Dalej.

  7. Na stronie Authentication wprowadź następujące właściwości połączenia dla wystąpienia bazy danych PostgreSQL.

    • Host: na przykład postgres-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: na przykład 5432
    • Użytkownik: na przykład postgres_user
    • Hasło: na przykład password123
  8. Kliknij pozycję Utwórz połączenie.

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

  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ć opcję 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ć główną osobę w polu tekstowym, a następnie kliknij główną osobę w zwróconych wynikach.

  14. Nadaj przywileje w katalogu. Kliknij Zezwól

    1. Określ podmioty zabezpieczeń , które będą miały dostęp do obiektów w wykazie. Zacznij wpisywać główną osobę w polu tekstowym, a następnie kliknij główną osobę w zwróconych wynikach.
    2. Wybierz ustawienia wstępne uprawnień , aby nadać je każdemu podmiotowi. Wszyscy użytkownicy konta domyślnie otrzymują BROWSE.
      • Wybierz pozycję Czytnik danych z menu rozwijanego, aby przyznać 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 i udziel.
  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 możliwych do zabezpieczenia w Unity Catalog.

  17. (Opcjonalnie) Dodaj komentarz.

  18. Kliknij Zapisz.

SQL

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

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

Zalecamy używanie tajnych danych w Azure Databricks zamiast ciągów w postaci zwykłego tekstu dla poufnych wartości, takich jak poświadczenia. Na 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.

Tworzenie wykazu obcego

Uwaga

Jeśli używasz interfejsu użytkownika do utworzenia połączenia ze źródłem danych, tworzenie wykazu obcego 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 katalogu Unity.

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ę wykazu, aby otworzyć 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 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.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Obsługiwane wypychania

Następujące wypychania są obsługiwane we wszystkich obliczeniach:

  • Filtry
  • Projekcje
  • Limit
  • Funkcje: częściowe, tylko dla wyrażeń filtru. (Funkcje ciągów, funkcje matematyczne i inne różne funkcje, takie jak Alias, Cast, SortOrder)

Następujące wypychania są obsługiwane w środowisku Databricks Runtime 13.3 LTS i nowszym oraz w magazynach SQL:

  • Następujące funkcje agregacji: MIN, MAX, COUNT, SUM, AVG, VAR_POP, VAR_SAMP, STDDEV_POP, STDDEV_SAMP, GREATEST, LEAST, COVAR_POP, COVAR_SAMP, CORR, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXY
  • Następujące funkcje logiczne: =, <, <, =, =>, >=, <=>
  • Następujące funkcje matematyczne (nieobsługiwane, jeśli usługa ANSI jest wyłączona): +, -, -, *, %, /
  • Różne operatory | i~
  • Sortowanie w przypadku użycia z limitem

Następujące wypychania nie są obsługiwane:

  • Sprzężenia
  • Funkcje systemu Windows

Mapowanie typu danych

Podczas odczytywania z bazy danych PostgreSQL do platformy Spark typy danych są mapowe w następujący sposób:

Typ bazy danych PostgreSQL Typ platformy Spark
numeryczne Typ dziesiętny
int2 ShortType
int4 (jeśli nie jest podpisany) Typ liczby całkowitej
int8, oid, xid, int4 (jeśli jest podpisany) LongType
float4 FloatType
podwójna precyzja, zmiennoprzecinkowa8 DoubleType
char Typ char
name, varchar, tid VarcharType
bpchar, znak różny, json, pieniądze, punkt, super, tekst StringType
bytea, geometria, varbyte BinaryType
bit, bool Typ logiczny
data Typ daty
tabstime, time, time with time zone, timetz, timetz, time without time zone, timestamp with time zone, timestamp, timestamptz, timestamp* TimestampType/TimestampNTZType
Typ tablicy Postgresql** ArrayType

*Podczas odczytywania z bazy danych Postgresql narzędzie Postgresql Timestamp jest mapowane na platformę Spark TimestampType , jeśli preferTimestampNTZ = false (ustawienie domyślne). Narzędzie Postgresql Timestamp jest mapowane na TimestampNTZType wartość if preferTimestampNTZ = true.

**Obsługiwane są ograniczone typy tablic.