Ausführen von Verbundabfragen mit PostgreSQL
In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen mit PostgreSQL-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 Ihren Run-Abfragen in einer PostgreSQL-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:
- Eine Verbindung mit Ihrer PostgreSQL-Datenbank
- Einen Fremdkatalog, der Ihre PostgreSQL-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 zwischen Ihrem Databricks Runtime-Cluster oder SQL-Warehouse und den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
- Azure Databricks-Cluster müssen databricks Runtime 13.3 LTS oder höher und freigegebenen oder einzelbenutzerzugriffsmodus verwenden.
- SQL-Warehouses müssen Pro- oder serverlose Warehouses 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
Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Katalog.
Klicken Sie oben im Bereich Katalog auf das Symbol Hinzufü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.
Geben Sie einen benutzerfreundlichen Verbindungsnamen ein.
Wählen Sie als Verbindungstypdie Option PostgreSQL aus.
Geben Sie die folgenden Verbindungseigenschaften für Ihre PostgreSQL-Instanz ein.
- Host: Beispiel:
postgres-demo.lb123.us-west-2.rds.amazonaws.com
- Port: Beispiel:
5432
- Benutzer: Beispiel:
postgres_user
- Kennwort: Beispiel:
password123
- Host: Beispiel:
(Optional) Klicken Sie auf Verbindung testen, um die Verbindung zu überprüfen.
(Optional) Fügen Sie einen Kommentar hinzu.
Klicken Sie auf Erstellen.
SQL
Führen Sie in einem Notebook oder im Databricks SQL-Abfrage-Editor den folgenden Befehl aus.
CREATE CONNECTION <connection-name> TYPE postgresql
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. Beispiele:
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>')
)
Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.
Erstellen eines Fremdkatalogs
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.
Hinweis
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
Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Katalog, um den Katalog-Explorer zu öffnen.
Klicken Sie oben im Bereich Katalog auf das Symbol Hinzufü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.
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
Die folgenden Pushdowns werden für alle Computeressourcen unterstützt:
- Filter
- Projektionen
- Begrenzung
- Funktionen: teilweise, nur für Filterausdrücke. (Zeichenfolgenfunktionen, mathematische Funktionen und andere verschiedene Funktionen, z. B. Alias, Cast, SortOrder)
Die folgenden Pushdowns werden in Databricks Runtime 13.3 LTS und höher sowie in SQL Warehouse unterstützt:
- Die folgenden Aggregationsfunktionen: 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
- Die folgenden booleschen Funktionen: =, <, <, =>, >=, <=>
- Die folgenden mathematischen Funktionen (werden nicht unterstützt, wenn ANSI deaktiviert ist): +, -, *, %, /
- Verschiedene Operatoren: | und ~
- Sortierung bei Verwendung mit einem Grenzwert
Die folgenden Pushdowns werden nicht unterstützt:
- Joins
- Windows-Funktionen
Datentypzuordnungen
Wenn Sie von PostgreSQL zu Spark lesen, werden die Datentypen wie folgt zugeordnet:
PostgreSQL-Typ | Spark-Typ |
---|---|
numeric | DecimalType |
int2 | ShortType |
int4 (falls ohne Vorzeichen) | IntegerType |
int8, oid, xid, int4 (falls mit Vorzeichen) | LongType |
float4 | FloatType |
double precision, float8 | DoubleType |
char | CharType |
name, varchar, tid | VarcharType |
bpchar, character varying, json, money, point, super, text | StringType |
bytea, geometry, varbyte | BinaryType |
bit, bool | BooleanType |
date | DateType |
tabstime, time, time with time zone, timetz, time without time zone, timestamp with time zone, timestamp, timestamptz, timestamp without time zone* | TimestampType/TimestampNTZType |
PostgreSQL-Arraytyp** | ArrayType |
*Wenn Sie aus PostgreSQL lesen, wird Timestamp
aus PostgreSQL dem TimestampType
in Spark zugeordnet, wenn preferTimestampNTZ = false
ist (Standard). PostgreSQL-Timestamp
wird TimestampNTZType
zugeordnet, wenn preferTimestampNTZ = true
ist.
**Eingeschränkte Arraytypen werden unterstützt.