Megosztás a következőn keresztül:


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

Ez a cikk azt ismerteti, hogyan állíthatja be a Lakehouse Federationt összevont lekérdezések futtatására olyan PostgreSQL-adatok lekérdezéseinek futtatásakor, amelyeket nem az Azure Databricks kezel. Ha többet szeretne megtudni a Lakehouse Federation-ről, olvassa el a Mi az a Lakehouse Federation?

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:

  • Kapcsolat a Lekérdezések futtatása a PostgreSQL-adatbázisban.
  • 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.

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 kell használnia, és megosztott vagy egyfelhasználós hozzáférési módot.
  • 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.
  • 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.

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.

Feljegyzé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 Katalógus ikonraKatalógus.

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

    Másik lehetőségként a Gyorselérési lapon kattintson a Külső adatok > gombra, nyissa meg a Kapcsolatok lapot, majd kattintson a Kapcsolat létrehozásagombra.

  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.

    • Gazdagép: 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
  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 a engedélyezése 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 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

Feljegyzé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 Katalógus ikonraKataló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 szögletes zárójelek nem kötelezőek. 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éses leküldések

A következő leküldéses leküldések támogatottak az összes számításhoz:

  • Szűrők
  • Leképezések
  • Határ
  • Függvények: részleges, csak szűrőkifejezésekhez. (Sztringfüggvények, matematikai függvények és egyéb egyéb függvények, például Alias, Cast, SortOrder)

A databricks runtime 13.3 LTS és újabb verziókban, valamint az SQL-raktárakban a következő leküldéses leküldések támogatottak:

  • A következő összesítési függvények: MIN, MAX, DARAB, SZUM, AVG, VAR_POP, VAR_SAMP, STDDEV_POP, STDDEV_SAMP, LEGNAGYOBB, LEGKISEBB, COVAR_POP, COVAR_SAMP, CORR, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXY
  • A következő logikai függvények: =, <, , <=>, >=, <=>
  • A következő matematikai függvények (nem támogatottak, ha az ANSI le van tiltva): +, -, *, %, /
  • Egyéb operátorok | és~
  • Rendezés, ha korláttal használjuk

A következő leküldéses leküldések nem támogatottak:

  • Összekapcsolások
  • Windows-függvények

Adattípus-leképezések

Amikor a PostgreSQL-ből a Sparkba olvas, az adattípusok az alábbiak szerint lesznek megfeleltetve:

PostgreSQL-típus Spark-típus
Numerikus Decimális típus
int2 ShortType
int4 (ha nincs aláírva) Egész számtípus
int8, oid, xid, int4 (ha aláírt) LongType
float4 FloatType
dupla pontosság, float8 DoubleType
bejárónő CharType
név, varchar, tid VarcharType
bpchar, karakter változó, json, pénz, pont, szuper, szöveg StringType
bájt, geometria, varbyte BinaryType
bit, bool Logikai típus
dátum: DateType
tabstime, time, time with time zone, timetz, timetz, time zone, timetamp with time zone, timestamp, timestamptz, timetamp without time zone* 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.