Spouštění federovaných dotazů na Amazon Redshiftu
Tento článek popisuje, jak nastavit Federaci Lakehouse tak, aby spouštěla federované dotazy na dotazy Spustit na datech Amazon Redshift, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.
Pokud se chcete připojit k dotazům Spustit v databázi Amazon Redshift pomocí federace Lakehouse, musíte v metastoru katalogu Azure Databricks Unity vytvořit následující:
- Připojení ke spuštěným dotazům v databázi Amazon Redshift.
- Cizí katalog, který zrcadlí dotazy Spustit v databázi Amazon Redshift v Katalogu Unity, abyste mohli použít syntaxi dotazů a nástroje zásad správného řízení dat v Unity ke správě přístupu uživatelů Azure Databricks k databázi.
Než začnete
Požadavky na pracovní prostor:
- Pracovní prostor je povolený pro katalog Unity.
Požadavky na výpočetní prostředky:
- Síťové připojení z clusteru Databricks Runtime nebo SQL Warehouse k cílovým databázovým systémům. Viz doporučení k sítím pro Federaci Lakehouse.
- Clustery Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo vyšší a sdílený nebo režim přístupu s jedním uživatelem.
- Sql Warehouse musí být Verze 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
CREATE CONNECTION
oprávněním k metastoru katalogu Unity připojenému k pracovnímu prostoru. - Chcete-li vytvořit cizí katalog, musíte mít
CREATE CATALOG
oprávnění k metastoru a být buď vlastníkem připojení, nebo mítCREATE FOREIGN CATALOG
oprávnění k 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 CREATE CONNECTION
příkaz SQL v poznámkovém bloku Azure Databricks nebo v 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 katalogu Unity.
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 Katalog.
V horní části podokna Katalog klikněte na ikonu Přidat a v nabídce vyberte 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í.
Zadejte uživatelsky přívětivý název připojení.
Vyberte typ připojení redshiftu.
Zadejte následující vlastnosti připojení pro vaši instanci Redshiftu.
- Hostitel: Příklad:
redshift-demo.us-west-2.redshift.amazonaws.com
- Port: Příklad:
5439
- Uživatel: Příklad:
redshift_user
- Heslo: Příklad:
password123
- Hostitel: Příklad:
(Volitelné) Kliknutím na test připojení potvrďte, že funguje.
(Volitelné) Přidejte komentář.
Klikněte na Vytvořit.
SQL
V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz.
CREATE CONNECTION <connection-name> TYPE redshift
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Doporučujeme používat tajné kódy Azure Databricks místo řetězců prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Příklad:
CREATE CONNECTION <connection-name> TYPE redshift
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
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 CREATE FOREIGN CATALOG
příkaz SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL.
Poznámka:
K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz 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 Katalog otevřete Průzkumníka katalogu.
V horní části podokna Katalog klikněte na ikonu Přidat 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 části Vytváření katalogů.
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
Podporují se následující nabízení:
- Filtry
- Projekce
- Limit
- Spojení
- Aggregates (Average, Count, Max, Min, StddevPop, StddevSamp, Sum, VarianceSamp)
- Funkce (řetězcové funkce a další různé funkce, jako jsou Alias, Cast, SortOrder)
- Třídění
Následující nabízená oznámení nejsou podporována:
- Funkce Systému Windows
Mapování datového typu
Při čtení z Redshiftu do Sparku se datové typy mapuje takto:
Typ Redshiftu | Typ Sparku |
---|---|
numerické | DecimalType |
int2, int4 | IntegerType |
int8, oid, xid | LongType |
float4 | FloatType |
dvojitá přesnost, float8, peníze | DoubleType |
bpchar, char, character varying, name, super, text, tid, varchar | 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 |
*Při čtení z Redshiftu je Redshift Timestamp
mapován na Spark TimestampType
pokud infer_timestamp_ntz_type = false
(výchozí). Redshift Timestamp
je mapován na TimestampNTZType
if infer_timestamp_ntz_type = true
.