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 usługi Lakehouse Federation, należy utworzyć następujące elementy w magazynie metadanych katalogu aparatu Unity usługi Azure Databricks:
- Połączenie z bazą danych MySQL.
- Wykaz obcy, który dubluje bazę danych MySQL w wykazie aparatu Unity, dzięki czemu można używać składni zapytań wykazu aparatu Unity 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 wykazu aparatu Unity.
Wymagania dotyczące obliczeń:
- Łączność sieciowa z klastra środowiska Databricks Runtime lub usługi SQL Warehouse z docelowymi systemami baz danych. Zobacz Zalecenia dotyczące sieci dla usługi Lakehouse Federation.
- Klastry usługi Azure Databricks muszą używać środowiska Databricks Runtime 13.3 LTS lub nowszego oraz trybu dostępu współużytkowanego lub pojedynczego użytkownika.
- Magazyny SQL muszą mieć wartość Pro lub Bezserwerową i muszą używać wersji 2023.40 lub nowszej.
Wymagane uprawnienia:
- Aby utworzyć połączenie, musisz być administratorem magazynu metadanych lub użytkownikiem z
CREATE CONNECTION
uprawnieniami w magazynie metadanych wykazu aparatu Unity dołączonym do obszaru roboczego. - Aby utworzyć wykaz obcy, musisz mieć
CREATE CATALOG
uprawnienia do magazynu metadanych i być właścicielem połączenia lub miećCREATE FOREIGN CATALOG
uprawnienia do połączenia.
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 bazy danych. Aby utworzyć połączenie, możesz użyć Eksploratora wykazu lub CREATE CONNECTION
polecenia 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 POLECENIA POST /api/2.1/unity-catalog/connections i Unity Catalog.
Wymagane uprawnienia: administrator magazynu metadanych lub użytkownik z uprawnieniami CREATE CONNECTION
.
Eksplorator wykazu
W obszarze roboczym usługi Azure Databricks kliknij pozycję Wykaz.
W górnej części okienka Wykaz kliknij ikonę Dodaj i wybierz pozycję Dodaj połączenie z menu.
Alternatywnie na stronie Szybki dostęp kliknij przycisk Dane >zewnętrzne, przejdź do karty Połączenia, a następnie kliknij pozycję Utwórz połączenie.
Wprowadź przyjazną dla użytkownika nazwę połączenia.
Wybierz typ połączenia programu MySQL.
Wprowadź następujące właściwości połączenia dla wystąpienia programu 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
- Host: na przykład
(Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.
(Opcjonalnie) Dodaj komentarz.
Kliknij pozycję Utwórz.
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 dla 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
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 CREATE FOREIGN CATALOG
polecenia SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.
Uwaga
Do utworzenia katalogu można również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks. Zobacz POLECENIA POST /api/2.1/unity-catalog/catalogs i 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
W obszarze roboczym usługi Azure Databricks kliknij pozycję Wykaz , aby otworzyć Eksploratora wykazu.
W górnej części okienka Wykaz kliknij ikonę Dodaj i wybierz pozycję Dodaj wykaz z menu.
Alternatywnie na stronie Szybki dostęp kliknij przycisk Wykazy , a następnie kliknij przycisk Utwórz wykaz .
Postępuj zgodnie z instrukcjami dotyczącymi tworzenia katalogów obcych w temacie 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 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 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
.