Összevont lekérdezések futtatása a PostgreSQL-en

Ez a lap bemutatja, hogyan állíthatja be a Lakehouse Federationt összevont lekérdezések futtatására az Azure Databricks által nem felügyelt PostgreSQL-adatok lekérdezéseinek futtatásakor. A Lakehouse Federation szolgáltatással kapcsolatos további információkért lásd a következőt: Kapcsolódás külső adatbázisokhoz és katalógusokhoz

Ha a PostgreSQL-adatbázisban futó lekérdezésekhez a Lakehouse Federation használatával szeretne csatlakozni, a következőket kell létrehoznia az Azure Databricks Unity Catalog metaadattárában (a 2023. november 9. után létrehozott munkaterületeken már automatikusan ki van építve a Unity Catalog metaadattára):

  • Kapcsolódás a PostgreSQL-adatbázisban történő lekérdezések futtatásához.
  • Egy idegen katalógus, amely tükrözi a PostgreSQL-adatbázison futtatott lekérdezéseket a Unity Catalogban, így a Unity Catalog lekérdezési szintaxisával és adatkezelési eszközeivel kezelheti az Azure Databricks felhasználói hozzáférését az adatbázishoz.

Mielőtt elkezdené

Munkaterületre vonatkozó követelmények:

  • A Unity Cataloghoz engedélyezett munkaterület. A 2023. november 9. után létrehozott munkaterületek automatikusan engedélyezve vannak a Unity Katalógusban, beleértve az automatikus metaadattár-kiépítést is. Nem kell manuálisan létrehoznia egy metaadattárat, hacsak a munkaterület nem előzi meg az automatikus engedélyezést, és nem lett aktiválva a Unity Catalog számára. Tekintse meg a Unity Catalog használatának első lépéseit.

Számítási követelmények:

  • Hálózati kapcsolat a számítási erőforrás és a céladatbázis-rendszerek között. Lásd a Lakehouse Federation hálózatkezelési ajánlásait.
  • Az Azure Databricks compute-nek a Databricks Runtime 13.3 LTS vagy újabb verzióját, valamint a Standard vagy dedikált hozzáférési módot kell használnia.
  • Az SQL-raktáraknak pro- vagy kiszolgáló nélkülinek kell lenniük, és a 2023.40-et vagy újabb verziót kell használniuk.

Szükséges engedélyek:

  • Kapcsolat létrehozásához metaadattár-rendszergazdának vagy CREATE CONNECTION jogosultsággal rendelkező felhasználónak kell lennie a munkaterülethez csatolt Unity Catalog metaadattárban. A Unity Cataloghoz automatikusan engedélyezett munkaterületeken alapértelmezés szerint a munkaterület rendszergazdái rendelkeznek a CREATE CONNECTION jogosultsággal.
  • Külföldi katalógus létrehozásához rendelkeznie kell a metaadattár CREATE CATALOG engedélyével, és vagy a kapcsolat tulajdonosának kell lennie, vagy CREATE FOREIGN CATALOG jogosultsággal kell rendelkeznie a kapcsolaton. A Unity Cataloghoz automatikusan engedélyezett munkaterületeken alapértelmezés szerint a munkaterület rendszergazdái rendelkeznek a CREATE CATALOG jogosultsággal.

Az alábbi tevékenységalapú szakaszokban további engedélykövetelmények vannak megadva.

Kapcsolat létrehozása

A kapcsolat megadja a külső adatbázisrendszer eléréséhez szükséges elérési utat és hitelesítő adatokat. Kapcsolat létrehozásához használhatja a Catalog Explorert vagy a CREATE CONNECTION SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.

Megjegyzés

A Databricks REST API-val vagy a Databricks parancssori felülettel is létrehozhat kapcsolatot. Lásd: POST /api/2.1/unity-catalog/connections, valamint az Unity Catalog-parancsokat.

Szükséges engedélyek: Metaadattár-rendszergazda vagy jogosultsággal CREATE CONNECTION rendelkező felhasználó.

Katalóguskezelő

  1. Az Azure Databricks-munkaterületen kattintson az Adatok ikonra.Katalógus.
  2. A Katalógus panel tetején kattintson a Hozzáadás vagy plusz ikonra, majd válassza a Kapcsolat létrehozása lehetőséget a menüből.
  3. A Kapcsolat alapjai oldalán, a Kapcsolat beállítása varázslóban, adjon meg egy felhasználóbarát kapcsolatnevet.
  4. Válasszon PostgreSQLkapcsolattípusát.
  5. (Nem kötelező) Megjegyzés hozzáadása.
  6. Kattintson a Továbbgombra.
  7. A Hitelesítési lapon adja meg a PostgreSQL-példány alábbi kapcsolati tulajdonságait.
    • Kiszolgáló: Például: postgres-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Például: 5432
    • Felhasználó: Például: postgres_user
    • Jelszó: Például: password123
    • userProvidedServerCertificate: Opcionális. A PostgreSQL példányod PEM-kódolt nyilvános tanúsítványa. A kapcsolat mindig SSL-lel titkosított, és ez a tanúsítvány igazolja a szerver személyazonosságát a TLS kézfogás során. Biztosítsd ezt, amikor a szervered egy privát vagy belső tanúsítványi hatóságtól származó tanúsítványt mutat be, amely nem az alapértelmezett bizalmi tárolóban van. Ez egy alternatíva a trustServerCertificatetruebeállítás helyett, ami kihagyja ezt az ellenőrzést. Ha mindketten adtok egy tanúsítványt, és beállítotok trustServerCertificate , trueakkor a megadott tanúsítvány elsőbbséget élvez. A hosztnév ellenőrzése a TLS kézfogás részeként történik (sslmode=verify-full): a kapcsolat meghibás, ha a tanúsítványon szereplő hosztnév nem egyezik meg a kért hosztnévvel. Állítsa a(z) sslmode értékét verify-ca értékre a tanúsítványlánc gazdagépnév-ellenőrzés nélküli ellenőrzéséhez.
  8. Kattintson a Kapcsolat létrehozásaelemre.
  9. A Katalógus alapjai lapon adja meg a külföldi katalógus nevét. A külső katalógus egy külső adatrendszer adatbázisát tükrözi, így az Azure Databricks és a Unity Catalog használatával lekérdezheti és kezelheti az adatbázisban lévő adatokhoz való hozzáférést.
  10. (Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.
  11. Kattintson Katalógus létrehozásagombra.
  12. Az Access lapon válassza ki azokat a munkaterületeket, amelyeken a felhasználók hozzáférhetnek a létrehozott katalógushoz. Kiválaszthatja Minden munkaterület rendelkezik hozzáféréssel, vagy kattintson a Hozzárendelés munkaterületekhezelemre, jelölje ki a munkaterületeket, majd kattintson hozzárendelése gombra.
  13. Módosítsa a tulajdonost, aki kezelheti a katalógus összes objektumához való hozzáférést. Kezdje el beírni a nevet vagy entitást a szövegmezőbe, majd kattintson a visszaadott eredmények között a találat közül a kívánt névre vagy entitásra.
  14. Adjon jogosultságokat a katalógusban. Kattintson az Engedélyezés gombra:
    1. Adja meg azokat a felelős személyeket, akik hozzáférhetnek a katalógusban lévő objektumokhoz. Kezdje el beírni a nevet vagy entitást a szövegmezőbe, majd kattintson a visszaadott eredmények között a találat közül a kívánt névre vagy entitásra.
    2. Válassza ki a jogosultsági beállításokat, amelyeket az egyes alanyoknak engedélyezni szeretne. Alapértelmezés szerint minden fiókfelhasználó BROWSE kap.
      • A legördülő menüben válassza Adatolvasó lehetőséget, hogy read jogosultságokat biztosítson a katalógus objektumaihoz.
      • A legördülő menüben válassza Adatszerkesztő lehetőséget, hogy read és modify jogosultságokat biztosítson a katalógus objektumaihoz.
      • Jelölje ki manuálisan a megadni kívánt jogosultságokat.
    3. Kattintson a megadása gombra.
  15. Kattintson a Továbbgombra.
  16. A Metaadatok lapon adja meg a címkék kulcs-érték párjait. További információ: Címkék alkalmazása a Unity Catalog biztonságos objektumaira.
  17. (Nem kötelező) Megjegyzés hozzáadása.
  18. Kattintson a Mentésgombra.

SQL

Futtassa a következő parancsot egy jegyzetfüzetben vagy a Databricks SQL-lekérdezésszerkesztőben.

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

Javasoljuk, hogy az Azure Databricks titkos kulcsokat használjon egyszerű szöveges sztringek helyett olyan bizalmas értékekhez, mint a hitelesítő adatok. Példa:

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

A kiszolgáló személyazonosságának a TLS-kézfogás során történő ellenőrzéséhez (például amikor a PostgreSQL-kiszolgáló egy olyan tanúsítványt mutat be, amelyet egy magán- vagy belső hitelesítésszolgáltató állított ki, és amely nem szerepel az alapértelmezett megbízható tanúsítványtárban), add meg a kiszolgáló PEM-kódolt tanúsítványát a userProvidedServerCertificate kapcsolóban. A kapcsolat mindig SSL-lel van titkosítva. Ez a lehetőség alternatívája, trustServerCertificate és elsőbbséget élvez vele szemben.

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>'),
  userProvidedServerCertificate '<pem-encoded-certificate>'
)

A titkos kódok beállításáról további információt a Titkos kódok kezelése című témakörben talál.

Idegen katalógus készítése

Megjegyzés

Ha a felhasználói felülettel hoz létre kapcsolatot az adatforrással, a rendszer külföldi katalóguslétrehozásról is rendelkezik, és kihagyhatja ezt a lépést.

A külső katalógus egy külső adatrendszer adatbázisát tükrözi, így az Azure Databricks és a Unity Catalog használatával lekérdezheti és kezelheti az adatbázisban lévő adatokhoz való hozzáférést. Idegen katalógus létrehozásához a már definiált adatforráshoz való kapcsolatot kell használnia.

Idegen katalógus létrehozásához használhatja a Catalog Explorert vagy a CREATE FOREIGN CATALOG SQL-parancsot egy Azure Databricks-jegyzetfüzetben vagy az SQL-lekérdezésszerkesztőben. Katalógus létrehozásához használhatja a Databricks REST API-t vagy a Databricks parancssori felületet is. Lásd POST /api/2.1/unity-catalog/catalogs és Unity Catalog parancsokat.

Szükséges engedélyek:CREATE CATALOG a metaadattár engedélye, illetve a kapcsolat tulajdonjoga vagy a CREATE FOREIGN CATALOG kapcsolat jogosultsága.

Katalóguskezelő

  1. Az Azure Databricks-munkaterületen kattintson az Adatok ikonra.Katalógus a Catalog Explorer megnyitásához.

  2. A Katalógus panel tetején kattintson a Hozzáadás vagy plusz ikonra hozzáadása ikonra, majd válassza Katalógus hozzáadása lehetőséget a menüből.

    Másik lehetőségként a Gyorselérési lapon kattintson a Katalógusok gombra, majd a Katalógus létrehozása gombra.

  3. Kövesse az utasításokat a külföldi katalógusok létrehozásához Katalógusok létrehozása.

SQL

Futtassa a következő SQL-parancsot egy jegyzetfüzetben vagy egy SQL-lekérdezésszerkesztőben. A zárójelek közötti elemek opcionálisak. Cserélje le a helyőrző értékeket:

  • <catalog-name>: A katalógus neve az Azure Databricksben.
  • : Az adatforrást, elérési utat és hozzáférési hitelesítő adatokat megadó kapcsolatobjektum.
  • <database-name>: Annak az adatbázisnak a neve, amelyet katalógusként szeretne tükrözni az Azure Databricksben.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Támogatott leküldések

Az alábbi táblázat a PostgreSQL által támogatott leküldéses műveleteket és az egyes műveletekhez szükséges számításokat sorolja fel.

Tolásos automata Támogatott számítás
Dátum-, idő- és időbélyegfüggvények
(csak részleges, szűrőkifejezések)
Támogatott Minden számítási kapacitás
Szűrők Támogatott Minden számítási kapacitás
Határ Támogatott Minden számítási kapacitás
Matematikai függvények
(csak részleges, szűrőkifejezések)
Támogatott Minden számítási kapacitás
Egyéb függvények
(például Alias, Cast, SortOrder; részleges, csak szűrőkifejezések)
Támogatott Minden számítási kapacitás
Offset Támogatott Minden számítási kapacitás
Projekciók Támogatott Minden számítási kapacitás
Karakterlánc függvények
(csak részleges, szűrőkifejezések)
Támogatott Minden számítási kapacitás
TABLESAMPLE
(csere nélkül)
Támogatott Minden számítási kapacitás
Aggregates Támogatott Minden számítási kapacitás
Aritmetikai operátorok
(például +, -, *, %, /; nem támogatott, ha az ANSI le van tiltva)
Támogatott Minden számítási kapacitás
Logikai operátorok
(például =, <=>, <, <=, >, >=)
Támogatott Minden számítási kapacitás
Bitenkénti operátorok
(&, | és ~)
Támogatott Minden számítási kapacitás
Rendezés, ha korláttal használjuk Támogatott Minden számítási kapacitás
Összekapcsolások Támogatott Databricks Runtime 17.2 és újabb verziók, valamint SQL Warehouse-számítás. Ez a leküldéses feldolgozás nyilvános előzetes állapotban érhető el; engedélyezze a Join-leküldés federált lekérdezésekhez kapcsolót a Előzetes verziók lapon.
Windows függvények Nem támogatott Nem támogatott

Adattípus-leképezések

Amikor a PostgreSQL-ből beolvassa a Sparkba, az adattípusok az alábbiak szerint kerülnek megfeleltetésre:

PostgreSQL-típus Spark-típus
numeric DecimalType
int2 ShortType
int4 (ha nincs aláírva) IntegerType
int8, oid, xidint4 , (ha aláírt) LongType
float4 FloatType
double precision, float8 DoubleType
char CharType
\, \, \ VarcharType
bpchar, character varying, json, jsonbmoney, point, supertext StringType
\, \, \ BinaryType
bit, bool BooleanType
date DateType
tabstime, time, time időzónával, timetz, time időzóna nélkül, timestamp időzónával, timestamp, timestamptz, timestamp időzóna nélkül* TimestampType/TimestampNTZType
Postgresql-tömb típusa** ArrayType

Amikor a PostgreSQL-ből olvas, a PostgreSQL Timestamp a Sparkra TimestampType van leképezve, ha preferTimestampNTZ = false (alapértelmezett). A Postgresql Timestamp az if TimestampNTZTypeparancsra preferTimestampNTZ = true van leképezve.

**A korlátozott tömbtípusok támogatottak.

További erőforrások