Freigeben über


Ausführen von Verbundabfragen in MySQL

In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen von MySQL-Daten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zu Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?.

Um mithilfe von Lakehouse Federation eine Verbindung mit Ihrer MySQL-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:

  • Eine Verbindung mit Ihrer MySQL-Datenbank.
  • Einen Fremdkatalog, der Ihre MySQL-Datenbank in Unity Catalog spiegelt, sodass Sie die Abfragesyntax und Datengovernancetools von Unity Catalog zum Verwalten des Azure Databricks-Benutzerzugriffs auf die Datenbank verwenden können.

Voraussetzungen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich muss für Unity Catalog aktiviert sein.

Computeanforderungen:

  • Netzwerkkonnektivität von Ihrer Rechnerressource zu den Ziel-Datenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Compute muss Databricks Runtime 13.3 LTS oder höher sowie den Zugriffsmodus Freigegeben oder Einzelbenutzer verwenden.
  • SQL-Lagerhäuser müssen pro oder serverlos sein und 2023.40 oder höher verwenden.

Erforderliche Berechtigungen:

  • Um eine Verbindung zu erstellen, müssen Sie Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“ für den Unity Catalog-Metastore sein, der an den Arbeitsbereich angefügt ist.
  • Um einen Fremdkatalog zu erstellen, müssen Sie über die Berechtigung „CREATE CATALOG“ für den Metastore verfügen und entweder der Besitzer der Verbindung sein oder über die Berechtigung „CREATE FOREIGN CATALOG“ für die Verbindung verfügen.

In jedem folgenden aufgabenbasierten Abschnitt werden zusätzliche Berechtigungsanforderungen angegeben.

Erstellen einer Verbindung

Eine Verbindung gibt einen Pfad und Anmeldeinformationen für den Zugriff auf ein externes Datenbanksystem an. Zum Erstellen einer Verbindung können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE CONNECTION“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Hinweis

Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um eine Verbindung zu erstellen. Siehe POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“.

Katalog-Explorer

  1. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Symbol „Katalog“Katalog.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. PlussymbolHinzufügen, und wählen Sie im Menü Verbindung hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Externe Daten >, navigieren Sie zur Registerkarte Verbindungen, und klicken Sie auf Verbindung erstellen.

  3. Geben Sie auf der Seite Verbindungsgrundlagen des Assistenten Verbindung einrichten einen benutzerfreundlichen Verbindungsnamen ein.

  4. Wählen Sie als Verbindungstypdie Option „MySQL” aus.

  5. (Optional) Fügen Sie einen Kommentar hinzu.

  6. Klicken Sie auf Weiter.

  7. Geben Sie auf der Seite Authentication die folgenden Verbindungseigenschaften für Ihre MySQL-Instanz ein:

    • Host: Beispiel: mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Beispiel: 3306
    • Benutzer: Beispiel: mysql_user
    • Kennwort: Beispiel: password123
  8. (Optional): Wählen Sie Vertrauenswürdiges Serverzertifikat aus. Dies ist standardmäßig deaktiviert. Wenn diese Option ausgewählt ist, verwendet die Transportschicht SSL, um den Kanal zu verschlüsseln und die Zertifikatkette zu umgehen, um die Vertrauensstellung zu überprüfen. Lassen Sie diese Einstellung auf der Standardeinstellung, es sei denn, Sie haben einen speziellen Grund, die Vertrauensüberprüfung zu umgehen.

  9. Klicken Sie auf Verbindung herstellen.

  10. Geben Sie auf der Seite Kataloggrundlagen einen Namen für den Fremdkatalog ein. Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können.

  11. (Optional) Klicken Sie auf Verbindung testen, um die Verbindung zu überprüfen.

  12. Klicken Sie auf Katalog erstellen.

  13. Wählen Sie auf der Seite Access die Arbeitsbereiche aus, in denen Benutzer auf den von Ihnen erstellten Katalog zugreifen können. Sie können Alle Arbeitsbereichen haben Zugriff auswählen oder auf Arbeitsbereichen zuweisen klicken, die Arbeitsbereiche auswählen und dann auf Zuweisen klicken.

  14. Ändern Sie unter Besitzer die Person, die den Zugriff auf alle Objekte im Katalog verwalten kann. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Prinzipal.

  15. Gewähren Sie Berechtigungen für den Katalog. Klicken Sie auf Gewähren:

    1. Geben Sie die Prinzipale an, die Zugriff auf Objekte im Katalog haben sollen. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Prinzipal.
    2. Wählen Sie die Berechtigungsvoreinstellungen aus, die den einzelnen Prinzipalen gewährt werden sollen. Standardmäßig werden allen Kontobenutzern BROWSE gewährt.
      • Wählen Sie Datenleser aus dem Dropdown-Menü aus, um read Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie Daten-Editor aus dem Dropdownmenü aus, um read und modify Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie manuell die Berechtigungen aus, die Sie vergeben möchten.
    3. Klicken Sie auf Gewähren.
  16. Klicken Sie auf Weiter.

  17. Geben Sie auf der Seite Metadaten Tag-Schlüssel-Wert-Paare an. Weitere Informationen finden Sie unter Anwenden von Tags auf sicherungsfähige Unity Catalog-Objekte.

  18. (Optional) Fügen Sie einen Kommentar hinzu.

  19. Klicken Sie auf Speichern.

SQL

Führen Sie in einem Notebook oder im Databricks SQL-Abfrage-Editor den folgenden Befehl aus.

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

Es wird empfohlen, Aure Databricks-Geheimnisse anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen zu verwenden. Beispiel:

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>')
)

Wenn Sie Nur-Text-Zeichenfolgen in SQL-Notebookbefehlen verwenden müssen, vermeiden Sie das Abschneiden der Zeichenfolge, indem Sie Sonderzeichen wie $ durch \ ersetzen. Beispiel: \$

Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.

Erstellen eines Fremdkatalogs

Hinweis

Wenn Sie die Benutzeroberfläche zum Erstellen einer Verbindung mit der Datenquelle verwenden, ist die Erstellung fremder Kataloge enthalten, und Sie können diesen Schritt überspringen.

Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können. Um einen fremden Katalog zu erstellen, verwenden Sie eine Verbindung mit der bereits definierten Datenquelle.

Zum Erstellen eines fremden Katalogs können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE FOREIGN CATALOG“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden. Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um einen Katalog zu erstellen. Siehe POST /api/2.1/unity-catalog/catalogs und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Sie benötigen die Berechtigung CREATE CATALOG für den Metastore und müssen entweder Besitzer der Verbindung sein oder die Berechtigung CREATE FOREIGN CATALOG für diese haben.

Katalog-Explorer

  1. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf KatalogsymbolKatalog, um den Katalog-Explorer zu öffnen.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. PlussymbolHinzufügen, und wählen Sie im Menü Katalog hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Kataloge, und klicken Sie dann auf die Schaltfläche Katalog erstellen.

  3. Befolgen Sie die Anweisungen zum Erstellen von Fremdkataloge unter Erstellen von Katalogen.

SQL

Führen Sie den folgenden SQL-Befehl in einem Notebook oder im Databricks SQL-Editor aus. Elemente in Klammern sind optional. Ersetzen Sie folgende Platzhalterwerte:

  • <catalog-name>: Name für den Katalog in Azure Databricks.
  • <connection-name>: Das Verbindungsobjekt, das die Datenquelle, den Pfad und die Anmeldeinformationen für den Zugriff angibt.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Unterstützte Pushdowns

Die folgenden Pushdowns werden für alle Computeressourcen unterstützt:

  • Filter
  • Projektionen
  • Begrenzung
  • Funktionen: teilweise, nur für Filterausdrücke. (Zeichenfolgenfunktionen, mathematische Funktionen, Datums-, Uhrzeit- und Zeitstempelfunktionen sowie verschiedene andere Funktionen wie Alias, Cast, SortOrder)

Die folgenden Pushdowns werden in Databricks Runtime 13.3 LTS und höher sowie in SQL-Warehouses unterstützt:

  • Aggregate
  • Boolesche Operatoren
  • Die folgenden mathematischen Funktionen (nicht unterstützt, wenn ANSI deaktiviert ist): +, -, *, %, /
  • Sortierung bei Verwendung mit einem Grenzwert

Die folgenden Pushdowns werden nicht unterstützt:

  • Joins
  • Windows-Funktionen

Datentypzuordnungen

Wenn Sie von MySQL zu Spark lesen, werden die Datentypen wie folgt zugeordnet:

MySQL-Typ Spark-Typ
bigint (falls ohne Vorzeichen), decimal DecimalType
tinyint*, int, integer, mediumint, smallint IntegerType
bigint (falls mit Vorzeichen) LongType
float FloatType
double DoubleType
char, enum, set CharType
varchar VarcharType
json, longtext, mediumtext, text, tinytext StringType
binary, blob, varbinary, varchar binary BinaryType
bit, boolean BooleanType
date, year DateType
datetime, time, timestamp** TimestampType/TimestampNTZType

*tinyint(1) signed und tinyint(1) unsigned werden als boolesche Werte behandelt und in BooleanType konvertiert. Siehe Connector/J-Referenz in der MySQL-Dokumentation.

** Wenn Sie aus MySQL lesen, wird Timestamp aus MySQL TimestampType in Spark zugeordnet, wenn preferTimestampNTZ = false (Standard). MySQL-Timestamp wird TimestampNTZType zugeordnet, wenn preferTimestampNTZ = true ist.