Freigeben über


Verbundabfragen (Lakehouse-Verbund)

Gilt für: Häkchen ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 13.3 LTS und höher durch Häkchen mit „Ja“ markiert Nur Unity Catalog

Der Abfrageverbund ermöglicht Azure Databricks das Ausführen von Abfragen für Daten, die von anderen Azure Databricks-Metastores sowie vielen Datenbankverwaltungssystemen (DBMS) von Drittanbietern wie PostgreSQL, mySQL und Snowflake bereitgestellt werden.

Um Daten von einem anderen System abzufragen, müssen Sie:

  1. Eine Fremdverbundung erstellen. Dadurch wird der spezifische Verbundserver bei Unity Catalog registriert und Mittel für die Kommunikation mit diesem werden eingerichtet, z. B. die URL, der Port und die verwendeten Anmeldeinformationen.
  2. Fremdkataloge vom Verbundserver bei Unity Catalog registrieren.
  3. Benutzern Zugriff auf die Fremdkataloge gewähren. Dies kann wie bei regulären Sicherungsvorgängen auf Katalog-, Schema- oder Tabellenebene erfolgen.

Sie können jetzt Abfragen für die verschiedenen lokalen und Fremdbeziehungen ausstellen.

Fremdverbindung

Eine Fremdverbindung ist ein sicherungsfähiges Unity Catalog-Objekt, das einen Fremdserver identifiziert. Im Rahmen von CREATE CONNECTION geben Sie die URL an, über die auf den Server zugegriffen werden kann.

Sie müssen auch Optionen wie Benutzername und Kennwort oder andere akzeptierte Authentifizierung angeben, die Azure Databricks für die Kommunikation verwendet.

Fremdkatalog

Bei einer Fremdverbindung, die Namespaces auf drei Ebenen (catalog/database.schema.table) unterstützt, können Sie ganze Kataloge mit dem Befehl CREATE FOREIGN CATALOG bei Unity Catalog registrieren. Azure Databricks hält die Definition der Schemas des Katalogs und deren Beziehungen mit der fremdsprachigen Quelle synchron.

Beispiele

-- Create a postgresql connection
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
       port '5432',
       user 'postgresql_user',
       password 'password123');

-- Alternatively create a postgresql connection with secret scope
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
       port '5432',
       user secret('secrets.r.us', 'postgresUser'),
       password secret('secrets.r.us', 'postgresPassword'));

-- Expose the "postgresdb" database with schemas and tables postgresql_user can access.
> CREATE FOREIGN CATALOG postgresql_catalog
    USING CONNECTION postgresql_connection
    OPTIONS (database 'postgresdb');

-- Execute a query across tables in the above catalog, schema, and table.
> SELECT * FROM postgresql_catalog.a_schema.table1
  UNION ALL
  SELECT * FROM default.postgresql_schema.table2
  UNION ALL
  SELECT * FROM default.postgresql.mytable
  UNION ALL
  SELECT local_table;
  ...