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.
- cs-CZ: cizí katalog, který zrcadlí vaši databázi Oracle v katalogu Unity, abyste mohli používat syntaxi dotazů a nástroje správy zásad katalogu Unity k řízení 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 aktivovaný 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
- Povolené nativní šifrování sítě na straně serveru (minimálně úroveň
ACCEPTED
). Podívejte se na Konfiguraci šifrování síťových dat v dokumentaci Oracle.
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 Catalogu.
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í data a vyberte Připojení.
- Klikněte na Vytvořit připojení.
- Na stránce Základní informace o připojení průvodce pro nastavení připojení zadejte uživatelsky přívětivý název připojení.
- Vyberte typ připojení Oracle.
- (Volitelné) Přidejte komentář.
- Klikněte na Další.
- Na stránce Ověřování zadejte pro instanci Oracle následující:
-
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
- 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 objekt zabezpečení a potom ve vrácených výsledcích klikněte na objekt zabezpečení.
- Udělte oprávnění v katalogu. Klikněte na Udělit:
- Zadejte hlavní uživatele , kteří budou mít přístup k objektům v katalogu. Začněte do textového pole zadávat objekt zabezpečení a potom ve vrácených výsledcích klikněte na objekt zabezpečení.
- 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
.- Z rozevírací nabídky vyberte Čtečku dat, abyste udělili
read
oprávnění k objektům v katalogu. - V rozevírací nabídce vyberte Datový editor a udělte
read
amodify
oprávnění k objektům v katalogu. - Ručně vyberte oprávnění, která chcete udělit.
- Z rozevírací nabídky vyberte Čtečku dat, abyste udělili
- Klikněte na Udělit.
- Klikněte na Další.
- Na stránce Metadata zadejte páry klíče a hodnoty pro značky. Další informace najdete v části Přidání značek k zabezpečitelným objektům v Katalogu Unity.
- (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 oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Databricks doporučuje používat Azure Databricks tajemství místo 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
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. 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 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 jako katalog 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
- Limit
- 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 |
---|---|
TIMESTAMP WITH TIMEZONE, TIMESTAMP with LOCAL TIMEZONE | 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
.