Ö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, vagyCREATE 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ő
Az Azure Databricks-munkaterületen kattintson
Katalógus.
A Katalógus panel tetején kattintson a
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.
A Kapcsolat alapjai oldalán, a Kapcsolat beállítása varázslóban, adjon meg egy felhasználóbarát kapcsolatnevet.
Válasszon PostgreSQLkapcsolattípusát.
(Nem kötelező) Megjegyzés hozzáadása.
Kattintson a Továbbgombra.
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
-
Gazdagép: Például:
Kattintson a Kapcsolat létrehozásaelemre.
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.
(Nem kötelező) Kattintson a Kapcsolat tesztelése elemre annak ellenőrzéséhez, hogy működik-e.
Kattintson Katalógus létrehozásagombra.
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.
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.
Adjon jogosultságokat a katalógusban. Kattintson a engedélyezése gombra:
- 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.
- 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
ésmodify
jogosultságokat biztosítson a katalógus objektumaihoz. - Jelölje ki manuálisan a megadni kívánt jogosultságokat.
- A legördülő menüben válassza Adatolvasó lehetőséget, hogy
- Kattintson a megadása gombra.
Kattintson a Továbbgombra.
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.
(Nem kötelező) Megjegyzés hozzáadása.
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ő
Az Azure Databricks-munkaterületen kattintson
Katalógus a Catalog Explorer megnyitásához.
A Katalógus panel tetején kattintson a
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.
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 TimestampNTZType
parancsra preferTimestampNTZ = true
van leképezve.
**A korlátozott tömbtípusok támogatottak.