Sdílet prostřednictvím


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

  1. V pracovním prostoru Azure Databricks klikněte na ikonu katalogu katalog.
  2. V levém podokně rozbalte nabídku externích dat a vyberte Připojení.
  3. Klikněte na Vytvořit připojení.
  4. Zadejte uživatelsky přívětivý název připojení.
  5. Vyberte typ připojení Oracle.
  6. 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
  7. (Volitelné) Přidejte komentář.
  8. 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

  1. V pracovním prostoru Azure Databricks kliknutím na ikonu katalogu Katalog otevřete Průzkumníka katalogu.

  2. V horní části podokna katalogu klikněte na ikonu Přidat nebo plusIkona Přidat a v nabídce vyberte Př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.

  3. 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 pokud spark.sql.timestampType = TIMESTAMP_NTZ.