Spouštění federovaných dotazů v PostgreSQL
Tento článek popisuje, jak nastavit Lakehouse Federation pro spouštění federovaných dotazů na data PostgreSQL, která nejsou spravována službou Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.
Chcete-li se připojit a spouštět dotazy na databázi PostgreSQL pomocí federace Lakehouse, musíte v metastore katalogu Azure Databricks Unity vytvořit následující:
- Připojení k dotazům Spustit v databázi PostgreSQL.
- cizí katalog, který zrcadlí dotazy spouštěné v databázi PostgreSQL v katalogu Unity, abyste mohli ke správě uživatelského přístupu k databázi použít syntax dotazů a nástroje pro správu dat v katalogu Unity.
Než začnete
Požadavky na pracovní prostor:
- Pracovní prostor je aktivován pro katalog Unity.
Požadavky na výpočetní prostředky:
- Síťové připojení z vašeho výpočetního prostředku k cílovým databázovým systémům. Viz doporučení k sítím pro Federaci Lakehouse.
- Výpočetní prostředky Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo novější a režim přístupu sdíleného nebo režim přístupu jednoho uživatele.
- Sql Warehouse musí být pro nebo bezserverové a musí používat verzi 2023.40 nebo vyšší.
Požadovaná oprávnění:
- Pokud chcete vytvořit připojení, musíte být správcem metastoru nebo uživatelem s oprávněním
CREATE CONNECTION
k metastoru katalogu Unity připojenému k pracovnímu prostoru. - Chcete-li vytvořit cizí katalog, musíte mít oprávnění
CREATE CATALOG
k metastoru a být buď vlastníkem připojení, nebo mít oprávněníCREATE FOREIGN CATALOG
pro připojení.
Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.
Vytvoření připojení
Připojení určuje cestu a přihlašovací údaje pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Průzkumníka katalogu nebo příkaz CREATE CONNECTION
SQL v poznámkovém bloku Azure Databricks nebo editoru dotazů SQL Databricks.
Poznámka:
K vytvoření připojení můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/connections a příkazy Unity Catalog.
Požadovaná oprávnění: Správce metastoru nebo uživatel s oprávněním CREATE CONNECTION
.
Průzkumník katalogu
V pracovním prostoru Azure Databricks klikněte na ikonu katalogu
Katalog.
V horní části podokna katalogu klikněte na ikonu
ikona Přidat a v nabídce vyberte možnost Přidat připojení.
Případně na stránce Rychlý přístup klikněte na tlačítko Externí data >, přejděte na kartu Připojení a klikněte na Vytvořit připojení.
Na stránce základy připojení průvodce Nastavení připojení zadejte uživatelsky přívětivý název připojení.
Vyberte typ připojení pro PostgreSQL.
(Volitelné) Přidejte komentář.
Klikněte na Další.
Na stránce Ověřování zadejte pro vaši instanci PostgreSQL následující vlastnosti připojení.
-
Hostitel: Příklad:
postgres-demo.lb123.us-west-2.rds.amazonaws.com
-
Port: Příklad:
5432
-
Uživatel: Příklad:
postgres_user
-
Heslo: Příklad:
password123
-
Hostitel: Příklad:
Klikněte na Vytvořit připojení.
Na stránce základy katalogu zadejte název cizího katalogu. Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog.
(Volitelné) Kliknutím na test připojení potvrďte, že funguje.
Klikněte na Vytvořit katalog.
Na stránce Access vyberte pracovní prostory, ve kterých mají uživatelé přístup k vytvořenému katalogu. Můžete vybrat Všechny pracovní prostory mají přístup, nebo klepněte na Přiřadit k pracovním prostorům, vyberte pracovní prostory a potom klikněte na Přiřadit.
Změňte vlastníka , který bude moct spravovat přístup ke všem objektům v katalogu. Začněte do textového pole zadávat hlavní objekt a potom ve vrácených výsledcích klikněte na hlavní objekt.
Udělte oprávnění v katalogu. Klikněte na Udělit:
- Určete principály , kteří budou mít přístup k objektům v katalogu. Začněte do textového pole zadávat hlavní objekt a potom ve vrácených výsledcích klikněte na hlavní objekt.
- Vyberte přednastavení oprávnění , které se mají každému objektu zabezpečení udělit. Všichni uživatelé účtu mají ve výchozím nastavení udělené
BROWSE
.- V rozevírací nabídce vyberte Čtečka dat a udělte
read
oprávnění k objektům v katalogu. - V rozevírací nabídce vyberte Datový Editor, abychom udělili
read
amodify
oprávnění k manipulaci s objekty v katalogu. - Ručně vyberte oprávnění, která chcete udělit.
- V rozevírací nabídce vyberte Čtečka dat a udělte
- Klikněte na Udělit.
Klikněte na Další.
Na stránce Metadata zadejte značky v podobě párů klíč-hodnota. Další informace najdete v tématu Označení zabezpečitelných objektů v Unity Catalogu.
(Volitelné) Přidejte komentář.
Klikněte na Uložit.
SQL
V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Doporučujeme používat Azure Databricks tajemství místo řetězců prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Příklad:
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>')
)
Informace o nastavení tajných kódů najdete v tématu Správa tajných kódů.
Vytvoření zahraničního katalogu
Poznámka:
Pokud k vytvoření připojení ke zdroji dat použijete uživatelské rozhraní, zahrne se vytvoření cizího katalogu a tento krok můžete přeskočit.
Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí katalog, použijete připojení ke zdroji dat, který již byl definován.
K vytvoření cizího katalogu můžete použít Průzkumníka katalogu nebo příkaz CREATE FOREIGN CATALOG
SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL.
K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Vizte POST /api/2.1/unity-catalog/catalogs a příkazy katalogu Unity.
Požadovaná oprávnění:CREATE CATALOG
oprávnění k metastoru a vlastnictví připojení nebo CREATE FOREIGN CATALOG
oprávnění k připojení.
Průzkumník katalogu
V pracovním prostoru Azure Databricks kliknutím na ikonu katalogu
Katalog otevřete Průzkumníka katalogu.
V horní části podokna katalogu klikněte na ikonu
Přidat nebo plus a v nabídce vyberte Přidat katalog.
Případně na stránce Rychlý přístup klikněte na tlačítko Katalogy a potom klikněte na tlačítko Vytvořit katalog.
Postupujte podle pokynů pro vytváření cizích katalogů v Vytvořit katalogy.
SQL
V poznámkovém bloku nebo editoru dotazů SQL spusťte následující příkaz SQL. Položky v závorkách jsou volitelné. Nahraďte zástupné hodnoty:
-
<catalog-name>
: Název katalogu v Azure Databricks. -
<connection-name>
: Objekt připojení , který určuje zdroj dat, cestu a přihlašovací údaje pro přístup. -
<database-name>
: Název databáze, kterou chcete zrcadlit jako katalog v Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Podporované odsdílení změn
Na všech výpočetních prostředcích se podporují následující nabízení:
- Filtry
- Projekce
- Limit
- Funkce: částečné, pouze pro výrazy filtru. (Řetězcové funkce, matematické funkce a další různé funkce, jako jsou Alias, Cast, SortOrder)
V Databricks Runtime 13.3 LTS a novějších a ve službě SQL Warehouse se podporují následující nabízené nabídky:
- Následující agregační funkce: 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
- Následující logické funkce: =, <, , <=>, >=, <=>
- Následující matematické funkce (nepodporuje se, pokud je anSI zakázán): +, -, *, %, /
- Různé operátory | a~
- Řazení při použití s limitem
Následující nabízená oznámení nejsou podporována:
- Spojení
- Funkce Systému Windows
Mapování datového typu
Při čtení z PostgreSQL do Sparku se datové typy mapuje takto:
Typ PostgreSQL | Typ Sparku |
---|---|
numerické | DecimalType |
int2 | Krátký typ |
int4 (pokud není podepsáno) | IntegerType |
int8, oid, xid, int4 (pokud je podepsáno) | LongType |
float4 | FloatType |
dvojitá přesnost, float8 | DoubleType |
char | CharType |
name, varchar, tid | VarcharType |
bpchar, character varying, json, money, point, super, text | StringType |
bytea, geometrie, varbyte | BinaryType |
bit, bool | BooleanType |
datum | Typ data |
tabstime, time, time with time zone, timetz, timetz, time without timetamp, timestamp with timetamp, timestamptz, timestamptz without time zone* | TimestampType/TimestampNTZType |
Typ pole Postgresql** | ArrayType |
*Při čtení z Postgresql se Postgresql Timestamp
mapuje na Spark TimestampType
( preferTimestampNTZ = false
výchozí). Postgresql Timestamp
je mapován na TimestampNTZType
if preferTimestampNTZ = true
.
**Podporují se omezené typy polí.