Spouštění federovaných dotazů v Oracle
Důležitý
Tato funkce je ve verzi Public Preview.
Tento článek popisuje, jak nastavit federaci Lakehouse pro spouštění federovaných dotazů na data Oracle, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.
Pokud se chcete připojit k databázi Oracle pomocí federace Lakehouse, musíte v metastoru katalogu Azure Databricks Unity vytvořit následující:
- Připojení k databázi Oracle.
- externího katalogu, který zrcadlí databázi Oracle v katalogu Unity, takže můžete použít syntaxi dotazů a nástroje pro zásady správy dat ke správě přístupu uživatelů Azure Databricks k databázi.
Než začnete
Než začnete, ujistěte se, že splňujete požadavky v této části.
Požadavky na Databricks
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. Podívejte se na síťová doporučení pro Lakehouse Federation.
- Výpočetní prostředky Azure Databricks musí používat Databricks Runtime 16.1 nebo novější a sdílený nebo režim přístupu jednoho uživatele.
- Sql Warehouse musí být pro nebo bezserverové a musí používat verzi 2024.50 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.
Požadavky Oracle
- Šifrování na straně serveru je povolené.
Vytvoření připojení Azure Databricks
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 levém podokně rozbalte nabídku externích dat a vyberte Připojení.
- Klikněte na Vytvořit připojení.
- Zadejte uživatelsky přívětivý název připojení.
- Vyberte typ připojení Oracle.
- Zadejte následující vlastnosti připojení pro instanci Oracle:
-
Hostitel: například
oracle-demo.123456.rds.amazonaws.com
-
Port: Například
1521
-
uživatele: Například
oracle_user
-
heslo: Například
password123
-
Hostitel: například
- (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 oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Databricks doporučuje používat Azure Databricks tajných kódů místo řetězců prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Například:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Pokud je nutné použít řetězce prostého textu v příkazech SQL poznámkového bloku, vyhněte se zkrácení řetězce tak, že vyčiste speciální znaky, jako je $
s \
. Příklad: \$
.
Informace o nastavení tajných kódů naleznete 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 příkaz CREATE FOREIGN CATALOG
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 Unity Catalog.
Požadovaná oprávnění :CREATE CATALOG
oprávnění k metastoru a vlastnictví připojení nebo oprávnění CREATE FOREIGN CATALOG
pro 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 Ikona Přidat a v nabídce vybertePřidat katalogu.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. -
<service-name>
: Název služby, který chcete zrcadlit v podobě katalogu v Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Podporované odsdílení změn
Podporovány jsou následující funkce:
- Filtruje
- Projekce
- Omezení
- Agregáty
- Ofset
- Obsazení
- Obsahuje, Začíná na, Končí na
Mapování datových typů
Při čtení z Oracle do Sparku se datové typy mapuje takto:
Typ Oracle | Typ Spark |
---|---|
ČASOVÉ RAZÍTKO S ČASOVÝM PÁSMEM, ČASOVÉ RAZÍTKO S MÍSTNÍM ČASOVÝM PÁSMEM | Typ časového razítka |
DATUM, ČASOVÉ RAZÍTKO | TypČasovéhoRazítka/TypČasovéhoRazítkaNTZ* |
ČÍSLO, FLOAT | DesetinnýTyp |
BINÁRNÍ FLOAT | FloatType |
BINÁRNÍ DOUBLE | DoubleType |
CHAR, NCHAR, VARCHAR2, NVARCHAR2 | StringType |
- Datum a časové razítko se mapují na Spark TimestampType, pokud
spark.sql.timestampType = TIMESTAMP_LTZ
(výchozí). Jsou mapovány na TimestampNTZType pokudspark.sql.timestampType = TIMESTAMP_NTZ
.