Delen via


Federatieve query's uitvoeren op PostgreSQL

In dit artikel wordt beschreven hoe u Lakehouse Federation instelt voor het uitvoeren van federatieve query's op Run-query's op PostgreSQL-gegevens die niet worden beheerd door Azure Databricks. Zie Wat is Lakehouse Federation? voor meer informatie over Lakehouse Federation.

Als u verbinding wilt maken met uw Run-query's in PostgreSQL-database met behulp van Lakehouse Federation, moet u het volgende maken in uw Azure Databricks Unity Catalog-metastore:

  • Een verbinding met uw Run-query's in postgreSQL-database.
  • Een vreemde catalogus die uw Run-query's in de PostgreSQL-database in Unity Catalog spiegelt, zodat u de queriesyntaxis en gegevensbeheerhulpmiddelen van Unity Catalog kunt gebruiken om Azure Databricks-gebruikerstoegang tot de database te beheren.

Voordat u begint

Vereisten voor werkruimte:

  • Werkomgeving ingesteld voor Unity Catalog.

Rekenvereisten:

  • Netwerkconnectiviteit van uw rekenresource naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
  • Azure Databricks Compute moet databricks Runtime 13.3 LTS of hoger gebruiken en gedeelde of toegangsmodus voor één gebruiker.
  • SQL-warehouses moeten pro of serverloos zijn en moeten 2023.40 of hoger gebruiken.

Vereiste machtigingen:

  • Als u een verbinding wilt maken, moet u een metastore-beheerder of een gebruiker zijn met de CREATE CONNECTION bevoegdheid voor de Unity Catalog-metastore die is gekoppeld aan de werkruimte.
  • Als u een buitenlandse catalogus wilt maken, moet u de machtiging CREATE CATALOG in de metastore hebben en de eigenaar van de verbinding zijn of de bevoegdheid CREATE FOREIGN CATALOG voor de verbinding hebben.

Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.

Een verbinding maken

Een verbinding geeft een pad en referenties op voor toegang tot een extern databasesysteem. Als u een verbinding wilt maken, kunt u Catalog Explorer of de CREATE CONNECTION SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Notitie

U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een verbinding te maken. Zie POST /api/2.1/unity-catalog/connections en Unity Catalog-opdrachten.

Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION bevoegdheid.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op het CataloguspictogramCatalogus.

  2. Klik boven in het deelvenster Catalogus op het pictogram Toevoegen of pluspictogram toevoegen en selecteer Een verbinding toevoegen in het menu.

    U kunt ook op de pagina Snelle toegang op de knop Externe gegevens > klikken, naar het tabblad Verbindingen gaan en op Verbinding makenklikken.

  3. Voer op de pagina Verbindingsbeginselen van de wizard Verbinding instellen een gebruiksvriendelijke verbindingsnaam in.

  4. Selecteer een verbindingstype voor PostgreSQL.

  5. (Optioneel) Voeg een opmerking toe.

  6. Klik op Volgende.

  7. Voer op de pagina Authentication de volgende verbindingseigenschappen in voor uw PostgreSQL-exemplaar.

    • Host: bijvoorbeeld postgres-demo.lb123.us-west-2.rds.amazonaws.com
    • Poort: bijvoorbeeld 5432
    • Gebruiker: bijvoorbeeld postgres_user
    • Wachtwoord: bijvoorbeeld password123
  8. Klik op Verbinding maken.

  9. Voer op de catalogus basics pagina een naam in voor de buitenlandse catalogus. Een refererende catalogus spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog.

  10. (Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.

  11. Klik op Catalogus maken.

  12. Selecteer op de pagina Access de werkruimten waarin gebruikers toegang hebben tot de catalogus die u hebt gemaakt. U kunt Alle werkruimten toegang geven, of klik op Toewijzen aan werkruimten, selecteer de werkruimten en klik vervolgens op Toewijzen.

  13. Wijzig de Eigenaar die in staat zal zijn om de toegang tot alle objecten in de catalogus te beheren. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.

  14. Verleent rechten aan de catalogus. Klik op Verlenen:

    1. Specificeer de Principals die toegang hebben tot objecten in de catalogus. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.
    2. Selecteer de vooraf ingestelde Bevoegdheden om aan elke principal toe te kennen. Alle accountgebruikers krijgen standaard BROWSE toegewezen.
      • Selecteer Gegevenslezer in de vervolgkeuzelijst om read bevoegdheden te verlenen voor objecten in de catalogus.
      • Selecteer Gegevenseditor in de vervolgkeuzelijst om read en modify bevoegdheden voor objecten in de catalogus toe te kennen.
      • Selecteer handmatig de bevoegdheden die u wilt verlenen.
    3. Klik op Verlenen.
  15. Klik op Volgende.

  16. Op de pagina Metagegevens specificeer sleutel-waardeparen voor tags. Zie Tags toepassen op beveiligbare objecten van Unity Catalogvoor meer informatie.

  17. (Optioneel) Voeg een opmerking toe.

  18. Klik op Opslaan.

SQL

Voer de volgende opdracht uit in een notebook of de Sql-query-editor van Databricks.

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

We raden aan om Azure Databricks geheimen te gebruiken in plaats van tekenreeksen zonder opmaak voor gevoelige waarden zoals inloggegevens. Voorbeeld:

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

Zie Geheimbeheer voor informatie over het instellen van geheimen.

Een buitenlandse catalogus maken

Notitie

Als u de gebruikersinterface gebruikt om een verbinding met de gegevensbron te maken, wordt het maken van een buitenlandse catalogus omvat en kunt u deze stap overslaan.

Een refererende catalogus spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog. Als u een externe catalogus wilt maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.

Als u een buitenlandse catalogus wilt maken, kunt u Catalog Explorer of de CREATE FOREIGN CATALOG SQL-opdracht gebruiken in een Azure Databricks-notebook of de SQL-queryeditor.

U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een catalogus te maken. Zie POST /api/2.1/unity-catalog/catalogs en Unity Catalog-opdrachten.

Vereiste machtigingen:CREATE CATALOG machtiging voor de metastore en eigendom van de verbinding of de CREATE FOREIGN CATALOG bevoegdheid voor de verbinding.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op CataloguspictogramCatalogus om Catalogus Explorer te openen.

  2. Klik boven aan het deelvenster Catalogus op het pictogram Toevoegen of pluspictogram Toevoegen en selecteer Een catalogus toevoegen in het menu.

    U kunt ook op de pagina Snelle toegang op de knop Catalogi klikken en vervolgens op de knop Catalogus maken klikken.

  3. Volg de instructies voor het maken van buitenlandse catalogi in Catalogi maken.

SQL

Voer de volgende SQL-opdracht uit in een notebook of SQL-queryeditor. Items tussen haakjes zijn optioneel. Vervang de waarden van de tijdelijke aanduidingen:

  • <catalog-name>: naam voor de catalogus in Azure Databricks.
  • <connection-name>: het verbindingsobject waarmee de gegevensbron, het pad en de toegangsreferenties worden opgegeven.
  • <database-name>: de naam van de database die u wilt spiegelen als catalogus in Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Ondersteunde pushdowns

De volgende pushdowns worden ondersteund voor alle berekeningen:

  • Filters
  • Projecties
  • Grens
  • Functies: gedeeltelijk, alleen voor filterexpressies. (Tekenreeksfuncties, wiskundige functies en andere diverse functies, zoals Alias, Cast, SortOrder)

De volgende pushdowns worden ondersteund in Databricks Runtime 13.3 LTS en hoger, en in SQL-warehouses:

  • De volgende aggregatiefuncties: 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
  • De volgende Booleaanse functies: =, <, <=>, >=, <=>
  • De volgende wiskundige functies (niet ondersteund als ANSI is uitgeschakeld): +, -, *, %, /
  • Diverse operators | en~
  • Sorteren, bij gebruik met limiet

De volgende pushdowns worden niet ondersteund:

  • Samenvoegingen
  • Windows-functies

Toewijzingen van gegevenstypen

Wanneer u van PostgreSQL naar Spark leest, worden gegevenstypen als volgt toegewezen:

PostgreSQL-type Spark-type
numeriek DecimalType
int2 ShortType
int4 (indien niet ondertekend) IntegerType
int8, oid, xid, int4 (indien ondertekend) LongType
float4 FloatType
dubbele precisie, float8 DoubleType
char CharType
naam, varchar, tid VarcharType
bpchar, teken variëren, json, geld, punt, super, tekst StringType
bytea, geometrie, varbyte BinaryType
bit, bool BooleanType
datum DateType
tabstime, time, time with time zone, timetz, time without time zone, timestamp with time zone, timestamp, timestamptz, timestamptz, timestamp without time zone* TimestampType/TimestampNTZType
Postgresql-matrixtype** ArrayType

*Wanneer u leest vanuit Postgresql, wordt Postgresql Timestamp toegewezen aan Spark TimestampType als preferTimestampNTZ = false (standaard). Postgresql Timestamp wordt toegewezen aan TimestampNTZType if preferTimestampNTZ = true.

**Beperkte matrixtypen worden ondersteund.