Ausführen von Verbundabfragen auf Microsoft Azure Synapse

In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen auf Daten von Microsoft Azure Synapse (SQL Data Warehouse) auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zum Lakehouse Federation finden Sie unter Herstellen einer Verbindung mit externen Datenbanken und Katalogen.

Um mithilfe von Lakehouse Federation eine Verbindung mit einer Azure Synapse-Datenbank (SQL Data Warehouse) herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:

  • Eine Verbindung mit Ihrer Azure Synapse-Datenbank (SQL Data Warehouse).
  • Einen Fremdkatalog, der Ihre Azure Synapse-Datenbank (SQL Data Warehouse) 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.

Bevor Sie beginnen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich ist für Unity Catalog aktiviert. Arbeitsbereiche, die nach dem 9. November 2023 erstellt wurden, werden für Unity Catalog automatisch aktiviert, einschließlich der automatischen Bereitstellung des Metastore. Sie müssen keinen Metaspeicher manuell erstellen, es sei denn, Ihr Arbeitsbereich existiert vor der automatischen Aktivierung und Unity Catalog wurde nicht aktiviert. Weitere Informationen finden Sie unter "Erste Schritte mit Unity-Katalog".

Computeanforderungen:

  • Netzwerkkonnektivität von Ihrer Rechnerressource zu den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Berechnungen müssen Databricks Runtime 13.3 LTS oder höher verwenden und im Standard- oder Dedizierten-Zugriffsmodus ausgeführt werden.
  • 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. In Arbeitsbereichen, die automatisch für Unity-Katalog aktiviert wurden, verfügen Arbeitsbereichsadministratoren standardmäßig über die CREATE CONNECTION Berechtigung.
  • 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 Arbeitsbereichen, die automatisch für Unity-Katalog aktiviert wurden, verfügen Arbeitsbereichsadministratoren standardmäßig über die CREATE CATALOG Berechtigung.

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.

Note

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 im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.
  2. Klicken Sie oben im Katalogbereich auf das Symbol hinzufügen ", und wählen Sie im Menü " Verbindung erstellen " aus.
  3. Geben Sie auf der Seite Verbindungsgrundlagen des Assistenten Verbindung einrichten einen benutzerfreundlichen Verbindungsnamen ein.
  4. Wählen Sie einen Verbindungstyp von SQLDW aus.
  5. (Optional) Fügen Sie einen Kommentar hinzu.
  6. Klicke auf Weiter.
  7. Geben Sie auf der Seite "Authentifizierung " die folgenden Verbindungseigenschaften für Ihre Azure Synapse-Instanz ein:
    • Host: Zum Beispiel: sqldws-demo.database.windows.net.
    • Port: Beispiel: 1433
    • User
    • Password
    • Vertrauensserverzertifikat: 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. Überlassen Sie diese Einstellung dem Standardwert, es sei denn, Sie haben einen speziellen Bedarf, die Überprüfung der Vertrauensstellung zu umgehen.
  8. Klicken Sie auf Verbindung herstellen.
  9. 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.
  10. (Optional) Klicken Sie auf Verbindung testen, um die Verbindung zu überprüfen.
  11. Klicken Sie auf Katalog erstellen.
  12. 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 Arbeitsbereiche haben Zugriff oder Arbeitsbereichen zuweisen, anschließend die Arbeitsbereiche und dann Zuweisen auswählen.
  13. Ändern Sie den Eigentümer, der in der Lage sein wird, den Zugriff auf alle Objekte im Katalog zu verwalten. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und wählen Sie den Prinzipal dann in den zurückgegebenen Ergebnissen aus.
  14. Gewähren Sie Berechtigungen für den Katalog. Klicken Sie auf "Zulassen":
    1. Geben Sie die Prinzipale an, die Zugriff auf Objekte im Katalog haben sollen. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und wählen Sie den Prinzipal dann in den zurückgegebenen Ergebnissen aus.
    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 Data Reader 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.
  15. Klicke auf Weiter.
  16. Geben Sie auf der Seite Metadaten Schlüssel-Wert-Paare für Tags an. Weitere Informationen finden Sie unter Anwenden von Tags auf sicherbare Unity-Katalog-Objekte.
  17. (Optional) Fügen Sie einen Kommentar hinzu.
  18. 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 sqldw
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 sqldw
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

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

Erstellen eines Fremdkatalogs

Note

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 Fremdkatalogs können Sie den Katalog-Explorer oder den SQL-Befehl CREATE FOREIGN CATALOG in einem Azure Databricks-Notebook oder im 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:CREATE CATALOG Berechtigung auf dem Metastore und entweder die Eigentümerschaft an der Verbindung oder die CREATE FOREIGN CATALOG Berechtigung auf der Verbindung.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog zum Öffnen des Katalog-Explorers.

  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 SQL-Abfrage-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.
  • <database-name>: Name der Datenbank, die sie als Katalog in Azure Databricks spiegeln möchten.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Unterstützte Pushdowns

In der folgenden Tabelle sind die Pushdownvorgänge aufgeführt, die für Azure Synapse (SQL Data Warehouse) unterstützt werden, zusammen mit der jeweils erforderlichen Berechnung.

Weitergabe Unterstützte Rechenleistung
Filters Unterstützt Alle Rechenressourcen
Contains, Startswith, Endswith Unterstützt Alle Rechenressourcen
Limit Unterstützt Alle Rechenressourcen
Mathematische Funktionen
SIN, COS, FLOOR, ABS (wenn ANSI aktiviert ist) – nur teilweise unterstützt, nur in Filterausdrücken
Unterstützt Alle Rechenressourcen
Sonstige Funktionen
Cast – teilweise Unterstützung, nur Filterausdrücke
Unterstützt Alle Rechenressourcen
Projections Unterstützt Alle Rechenressourcen
Zeichenfolgenfunktionen
(UPPER, LOWER, CONCAT, TRIM – teilweise Unterstützung, nur Filterausdrücke)
Unterstützt Alle Rechenressourcen
Aggregate
(Mittelwert, Anzahl, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
Unterstützt Alle Rechenressourcen
Arithmetische operatoren
(z. B. +, -, *, %, /) - wird nicht unterstützt, wenn ANSI deaktiviert ist
Unterstützt Alle Rechenressourcen
Boolesche Operatoren
(z. B. =, <=>, <, <=, >, >=)
Unterstützt Alle Rechenressourcen
Bitweise Operatoren
(&, |, ^ und ~)
Unterstützt Alle Rechenressourcen
Sortierung bei Verwendung mit einem Limit Unterstützt Alle Rechenressourcen
Joins Nicht unterstützt Nicht unterstützt
Fensterfunktionen Nicht unterstützt Nicht unterstützt

Datentypzuordnungen

Wenn Sie aus Synapse / SQL Data Warehouse zu Spark lesen, werden Datentypen wie folgt zugeordnet:

Synapsetyp Spark-Typ
decimal, money, numeric, smallmoney DecimalType
smallint ShortType
tinyint ByteType
int IntegerType
bigint LongType
real FloatType
float DoubleType
char, nchar, ntext, nvarchar, , text, uniqueidentifier, varchar, xml StringType
binary, geography, geometry, image, timestamp, , udt, varbinary BinaryType
bit BooleanType
date DateType
datetime, datetime2, smalldatetime, time TimestampType/TimestampNTZType*

*Wenn Sie aus Synapse/SQL Data Warehouse (SQLDW) lesen, werden datetimes von SQLDW zu TimestampType von Spark zugeordnet, wenn preferTimestampNTZ = false (Standard). datetimes von SQLDW werden TimestampNTZType zugeordnet, wenn preferTimestampNTZ = true.