Udostępnij za pośrednictwem


Uruchamianie zapytań federacyjnych w usłudze MySQL

W tym artykule opisano sposób konfigurowania federacji lakehouse w celu uruchamiania zapytań federacyjnych na danych MySQL, 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 MySQL przy użyciu Lakehouse Federation, należy utworzyć następujące elementy w magazynie metadanych katalogu Unity usługi Azure Databricks:

  • Połączenie z bazą danych MySQL.
  • obcy katalog, który odzwierciedla bazę danych MySQL w Unity Catalog, dzięki czemu można użyć składni zapytań Unity Catalog i narzędzi do zarządzania danymi w celu zarządzania dostępem użytkowników do bazy danych w Azure Databricks.

Zanim rozpoczniesz

Wymagania dotyczące obszaru roboczego:

  • Obszar roboczy został włączony dla 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 i udostępnionej lub trybu dostępu 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 uprawnieniem CREATE CONNECTION w magazynie metadanych Unity Catalog podłączonym do obszaru roboczego.
  • Aby utworzyć wykaz obcy, musisz mieć uprawnienie CREATE CATALOG w magazynie metadanych i być właścicielem połączenia lub mieć uprawnienia CREATE FOREIGN CATALOG w 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 umożliwiające dostęp do zewnętrznego systemu bazy danych. 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 zakładki Połączenia, a następnie kliknij Utwórz połączenie.

  3. Na stronie Podstawy połączenia w kreatorzeKonfigurowania połączenia, wprowadź nazwę połączenia przyjazną użytkownikowi .

  4. Wybierz typ połączenia dla MySQL.

  5. (Opcjonalnie) Dodaj komentarz.

  6. Kliknij przycisk Dalej.

  7. Na stronie Authentication wprowadź następujące właściwości połączenia dla instancji MySQL.

    • Host: na przykład mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: na przykład 3306
    • Użytkownik: na przykład mysql_user
    • Hasło: na przykład password123
  8. (Opcjonalnie): wybierz certyfikat serwera zaufania . Ta opcja jest domyślnie zaznaczona. 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.

  9. Kliknij Utwórz połączenie.

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

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

  12. Kliknij Utwórz katalog.

  13. 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, po czym kliknij Przypisz.

  14. 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 podmiot w zwróconych wynikach.

  15. Udziel przywilejów w katalogu. Kliknij pozycję Udziel:

    1. Określ główne 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 podmiot w zwróconych wynikach.
    2. Wybierz ustawienia wstępne przywilejów , które mają zostać przyznane 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 pozycję i udziel.
  16. Kliknij przycisk Dalej.

  17. Na stronie Metadane określ pary klucz-wartość tagów. Aby uzyskać więcej informacji, zobacz Dodaj tagi do zabezpieczalnych obiektów w katalogu Unity.

  18. (Opcjonalnie) Dodaj komentarz.

  19. Kliknij Zapisz.

SQL

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

CREATE CONNECTION <connection-name> TYPE mysql
OPTIONS (
  host '<hostname>',
  port '<port>',
  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 wartości, takich jak poświadczenia. Na przykład:

CREATE CONNECTION <connection-name> TYPE mysql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

Jeśli musisz używać ciągów w postaci zwykłego tekstu w poleceniach SQL notesu, należy unikać obcinania ciągu przez ucieczkę znaków specjalnych, takich jak $ w przypadku \polecenia . Na przykład: \$.

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 katalogu zewnętrznego jest uwzględniane, więc 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 usługi Databricks. 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ę katalogu katalog, aby otworzyć Eksplorator Katalogu.

  2. Na górze okienka katalogu kliknij ikonę Dodaj lub plusikonę Dodaj i wybierz z menu opcję Dodaj katalog.

    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 SQL usługi Databricks. 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.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-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, funkcje daty, godziny i znacznika czasu oraz 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:

  • Agregacje
  • Operatory logiczne
  • Następujące funkcje matematyczne (nieobsługiwane, jeśli usługa ANSI jest wyłączona): +, -, -, *, %, /
  • Sortowanie, gdy jest używane z limitem

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

  • Sprzężenia
  • Funkcje systemu Windows

Mapowanie typu danych

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

Typ bazy danych MySQL Typ platformy Spark
bigint (jeśli nie jest podpisany), dziesiętny Typ dziesiętny
tinyint*, int, integer, mediumint, smallint Typ liczby całkowitej
bigint (jeśli jest podpisany) LongType
liczba zmiennoprzecinkowa FloatType
double DoubleType
znak, wyliczenie, zestaw Typ char
varchar VarcharType
json, longtext, mediumtext, text, tinytext StringType
binary, blob, varbinary, varchar binary BinaryType
bit, wartość logiczna Typ logiczny
data, rok Typ daty
datetime, time, timestamp** TimestampType/TimestampNTZType

* tinyint(1) signed i tinyint(1) unsigned są traktowane jako wartość logiczna i konwertowane na BooleanType. Zobacz Dokumentację łącznika/J w dokumentacji programu MySQL.

** Podczas odczytywania z programu MySQL program MySQL Timestamp jest mapowany na platformę Spark TimestampType , jeśli preferTimestampNTZ = false (ustawienie domyślne). Program MySQL Timestamp jest mapowany na TimestampNTZType wartość if preferTimestampNTZ = true.