Delen via


Federatieve query's uitvoeren in Oracle

Belangrijk

Deze functie bevindt zich in openbare preview-versie.

In dit artikel wordt beschreven hoe u Lakehouse Federation set om federatieve query's uit te voeren op Oracle-gegevens die niet worden beheerd door Azure Databricks. Voor meer informatie over Lakehouse Federation, zie Wat is Lakehouse Federation?.

Als u verbinding wilt maken met uw Oracle-database met behulp van Lakehouse Federation, moet u het volgende maken in uw Azure Databricks Unity-Catalog-metastore:

  • Een verbinding met uw Oracle-database.
  • Een externe catalog die uw Oracle-database in Unity spiegelt Catalog, zodat u Unity Catalog querysyntaxis en hulpprogramma's voor gegevensbeheer kunt gebruiken om azure Databricks-gebruikerstoegang tot de database te beheren.

Voordat u begint

Voordat u begint, moet u ervoor zorgen dat u voldoet aan de vereisten in deze sectie.

Vereisten voor Databricks

Vereisten voor werkruimte:

  • Werkruimte ingeschakeld voor Unity Catalog.

Rekenvereisten:

  • Netwerkconnectiviteit van uw rekenresource naar de doeldatabasesystemen. Zie Netwerkaanbevelingen voor Lakehouse Federation.
  • Azure Databricks Compute moet Gebruikmaken van Databricks Runtime 16.1 of hoger en Gedeelde of Enkele gebruiker toegangsmodus.
  • SQL-warehouses moeten pro of serverloos zijn en moeten 2024.50 of hoger gebruiken.

Vereiste machtigingen:

  • Als u een verbinding wilt maken, moet u een metastore-beheerder of een gebruiker zijn met de bevoegdheid CREATE CONNECTION op de Unity Catalog metastore die is gekoppeld aan de werkruimte.
  • Als u een vreemde catalogwilt maken, moet u de CREATE CATALOG-machtiging hebben voor de metastore en ofwel de eigenaar van de verbinding zijn of de CREATE FOREIGN CATALOG-bevoegdheid voor de verbinding hebben.

Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.

Oracle-vereisten

  • Versleuteling aan serverzijde ingeschakeld.

Een Azure Databricks-verbinding maken

Een verbinding specificeert een route en credentials voor toegang tot een extern databasesysteem. Als u een verbinding wilt maken, kunt u Catalog Explorer of de CREATE CONNECTION SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Notitie

U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een verbinding te maken. Zie POST /api/2.1/unity-catalog/connections en Unity-opdrachten Catalog.

vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION-bevoegdheid.

Catalog Explorer

  1. Klik in de Azure Databricks-werkruimte op Catalog pictogramCatalog.
  2. Vouw in het linkerdeelvenster het menu Externe gegevens en selectConnectionsuit.
  3. Klik op Verbinding maken.
  4. Voer een gebruiksvriendelijke verbindingsnaam in.
  5. Select een verbindingstype van Oracle.
  6. Voer de volgende verbindingseigenschappen in voor het Oracle-exemplaar:
    • Host: bijvoorbeeld oracle-demo.123456.rds.amazonaws.com
    • poort: bijvoorbeeld 1521
    • Gebruiker: bijvoorbeeld oracle_user
    • wachtwoord: bijvoorbeeld password123
  7. (Optioneel) Voeg een opmerking toe.
  8. Klik op maken.

SQL

Voer de volgende opdracht uit in een notebook of de Sql-queryeditor van Databricks:

CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Databricks raadt u aan Azure Databricks geheimen te gebruiken in plaats van tekenreeksen zonder opmaak voor gevoelige values zoals credentials. Bijvoorbeeld:

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>')
)

Als u tekenreeksen zonder opmaak moet gebruiken in SQL-opdrachten in notebooks, vermijdt u het afkappen van de tekenreeks door speciale tekens zoals $ met \te ontsnappen. Bijvoorbeeld: \$.

Zie Geheimbeheervoor informatie over het instellen van geheimen.

Een buitenlandse catalog maken

Een vreemde catalog spiegelt een database in een extern gegevenssysteem, zodat u gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog. Als u een externe catalogwilt maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.

Als u een vreemde catalogwilt maken, kunt u Catalog Explorer of de CREATE FOREIGN CATALOG SQL-opdracht gebruiken in een Azure Databricks-notebook of de SQL-query-editor.

Notitie

U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een catalogte maken. Zie POST /api/2.1/unity-catalog/catalogs en Unity-opdrachten Catalog.

Vereiste machtigingen:CREATE CATALOG machtiging voor de metastore en eigendom van de verbinding of de CREATE FOREIGN CATALOG bevoegdheid op de verbinding.

Catalog Explorer

  1. Klik in de Azure Databricks-werkruimte op Catalog pictogramCatalog om Catalog Explorer te openen.

  2. Klik bovenaan het deelvenster Catalog op het pictogram Toevoegen of pluspictogram en selecteer selecteen catalog vanuit het menu.

    U kunt ook vanaf de pagina Snelle toegang op de knop Catalogs klikken en vervolgens op de knop Maken catalog klikken.

  3. Volg de instructies voor het maken van buitenlandse catalogs in door catalogste creƫren.

SQL

Voer de volgende SQL-opdracht uit in een notebook of SQL-queryeditor. Items tussen haakjes zijn optioneel. Vervang de tijdelijke aanduiding values:

  • <catalog-name>: naam voor de catalog in Azure Databricks.
  • <connection-name>: het verbindingsobject waarmee de gegevensbron, het pad en de toegang credentialsworden opgegeven.
  • <service-name>: servicenaam die u wilt spiegelen als een catalog in Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');

Ondersteunde pushdowns

De volgende pushdowns worden ondersteund:

  • Filters
  • Projecties
  • Limit
  • Aggregaten
  • Offset
  • Rolbezetting
  • Bevat, Begint met, Eindigt met

Toewijzingen van gegevenstypen

Wanneer u gegevens leest van Oracle naar Spark, worden gegevenstypen als volgt toegewezen:

Oracle type Sparktype
Tijdstempel met TIMEZONE, Tijdstempel met lokaal TIMEZONE Tijdstempeltype
DATUM, TIJDSTEMPEL TimestampType/TimestampNTZType*
GETAL, KOMMAGETAL DecimaalType
BINAIRE FLOAT FloatType
BINAIR DUBBEL DoubleType
CHAR, NCHAR, VARCHAR2, NVARCHAR2 StringType
  • DATE en TIMESTAMP worden toegewezen aan Spark TimestampType als spark.sql.timestampType = TIMESTAMP_LTZ (standaardinstelling). Ze worden toegewezen aan TimestampNTZType als spark.sql.timestampType = TIMESTAMP_NTZ.