Condividi tramite


Eseguire query federate su Oracle

Importante

Questa funzionalità si trova in anteprima pubblica.

Questo articolo descrive come set up Lakehouse Federation per eseguire query federate su dati Oracle non gestiti da Azure Databricks. Per altre informazioni sulla federazione di Lakehouse, vedere Che cos'è la federazione lakehouse?.

Per connettersi al database Oracle usando Lakehouse Federation, è necessario creare quanto segue nel metastore di Azure Databricks Unity Catalog:

  • Una connessione al database Oracle.
  • Un catalog esterno che rispecchia il database Oracle in Unity Catalog, permettendo di utilizzare la sintassi di query di Unity Catalog e gli strumenti di governance dei dati per gestire l'accesso al database da parte degli utenti di Azure Databricks.

Prima di iniziare

Prima di iniziare, assicurarsi di soddisfare i requisiti in questa sezione.

Requisiti di Databricks

Requisiti dell'area di lavoro:

  • Area di lavoro abilitata per Unity Catalog.

Requisiti di calcolo:

  • Connettività di rete dalla risorsa di calcolo ai sistemi di database di destinazione. Consultare Raccomandazioni per la rete per Lakehouse Federation.
  • Il calcolo di Azure Databricks deve utilizzare Databricks Runtime 16.1 o una versione successiva e la modalità di accesso condivisa o per utente singolo.
  • I warehouse SQL devono essere pro o serverless e devono usare la versione 2024.50 o successiva.

Autorizzazioni necessarie:

  • Per creare una connessione, è necessario essere amministratore del metastore o un utente con il privilegio CREATE CONNECTION sul metastore Unity Catalog collegato all'area di lavoro.
  • Per creare un catalogesterno, è necessario avere l'autorizzazione CREATE CATALOG sul metastore ed essere proprietario della connessione o avere il privilegio CREATE FOREIGN CATALOG sulla connessione.

In ogni sezione basata su attività che segue vengono specificati requisiti di autorizzazione aggiuntivi.

Requisiti Oracle

Creare una connessione di Azure Databricks

Una connessione specifica un percorso e credentials per l'accesso a un sistema di database esterno. Per creare una connessione, è possibile usare Catalog Explorer o il comando SQL CREATE CONNECTION in un notebook di Azure Databricks o nell'editor di query SQL di Databricks.

Nota

È anche possibile usare l'API REST di Databricks o l'interfaccia della riga di comando di Databricks per creare una connessione. Vedere post /api/2.1/unity-catalog/connections e comandi Catalog Unity.

Autorizzazioni necessarie: amministratore o utente del metastore con il privilegio CREATE CONNECTION.

Catalog Esploratore

  1. Nell'area di lavoro di Azure Databricks fare clic sull'icona CatalogCatalog.
  2. Nel riquadro sinistro, espandi il menu Dati esterni e selectConnections.
  3. Fare clic su Crea connessione.
  4. Nella pagina informazioni di base sulla connessione della connessione guidata immettere un nome di connessione descrittivo.
  5. Select un tipo di connessione di Oracle.
  6. (Facoltativo) Aggiungere un commento.
  7. Fare clic su Avanti.
  8. Nella pagina Autenticazione, inserisci quanto segue per l'istanza di Oracle:
    • Host: Ad esempio, oracle-demo.123456.rds.amazonaws.com
    • porta: ad esempio, 1521
    • Utente: per esempio, oracle_user
    • password: ad esempio, password123
  9. Fare clic su Crea connessione.
  10. Nella pagina Catalog delle nozioni di base, immettere un nome per il catalogstraniero. Un catalog esterno esegue il mirroring di un database in un sistema dati esterno in modo da poter eseguire query e gestire l'accesso ai dati in tale database usando Azure Databricks e Unity Catalog.
  11. (Facoltativo) Fare clic su Test di connessione per verificare che funzioni.
  12. Fare clic su Crea catalog.
  13. Nella pagina Access, gli utenti possono accedere alle aree di lavoro select in cui sono state create le catalog. È possibile selectTutte le aree di lavoro hanno accessooppure fare clic su Assegna alle aree di lavoro, select le aree di lavoro e quindi fare clic su Assegna.
  14. Cambia il Proprietario, che potrà gestire l'accesso a tutti gli oggetti nel catalog. Inizia a digitare un principale nella casella di testo e quindi fai clic sul principale nei risultati visualizzati.
  15. Grant privilegi nel catalog. Fare clic su Grant:
    1. Specificare i Principals che avranno accesso agli oggetti nel catalog. Inizia a digitare un principale nella casella di testo e quindi fai clic sul principale nei risultati visualizzati.
    2. Select i set di impostazioni dei privilegi per grant a ogni entità. Tutti gli utenti dell'account vengono concessi BROWSE per impostazione predefinita.
      • Select lettore dati dal menu a discesa per grantread privilegi per gli oggetti nel catalog.
      • Select editor di dati dal menu a discesa per assegnare grantread e modify privilegi sugli oggetti nel catalog.
      • select manualmente i privilegi per grant.
    3. Fare clic su Grant.
  16. Fare clic su Avanti.
  17. Nella pagina metadati, specificare le coppie chiave-valore dei tag. Per ulteriori informazioni, consultare Applicare i tag agli oggetti proteggibili di Unity Catalog.
  18. (Facoltativo) Aggiungere un commento.
  19. Fare clic su Salva.

SQL

Eseguire il comando seguente in un notebook o nell'editor di query SQL di Databricks:

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

Databricks consiglia di usare i segreti di Azure Databricks anziché le stringhe di testo non crittografato per i values sensibili, ad esempio credentials. Per esempio:

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

Se è necessario usare stringhe di testo non crittografato nei comandi SQL del notebook, evitare di troncare la stringa eliminando caratteri speciali come $ con \. Ad esempio: \$.

Per informazioni sulla configurazione dei segreti, vedere Gestione dei segreti.

Creare un catalog esterno

Nota

Se si usa l'interfaccia utente per creare una connessione all'origine dati, la creazione di catalog esterna è inclusa ed è possibile ignorare questo passaggio.

Un catalog esterno esegue il mirroring di un database in un sistema dati esterno in modo da poter eseguire query e gestire l'accesso ai dati in tale database usando Azure Databricks e Unity Catalog. Per creare un catalogesterno, si usa una connessione all'origine dati già definita.

Per creare un catalogesterno, è possibile usare Catalog Explorer o il comando SQL CREATE FOREIGN CATALOG in un notebook di Azure Databricks o nell'editor di query SQL. È anche possibile usare l'API REST di Databricks o il CLI di Databricks per creare un catalog. Vedere post /api/2.1/unity-catalog/catalogs e comandi Catalog Unity.

Autorizzazioni necessarie: l'autorizzazioneCREATE CATALOG sul metastore e la proprietà della connessione o il privilegio CREATE FOREIGN CATALOG sulla connessione.

Catalog Esploratore

  1. Nell'area di lavoro di Azure Databricks fare clic sull'icona CatalogCatalog per aprire Esplora Catalog.

  2. Nella parte superiore del riquadro Catalog, fare clic sull'icona di aggiunta o segno più Aggiungi e selectnel menu Aggiungi una catalog.

    In alternativa, nella pagina di accesso rapido, fare clic sul pulsante Catalogs e quindi sul pulsante Crea catalog.

  3. Seguire le istruzioni per la creazione di catalogs esterne in Creare catalogs.

SQL

Eseguire il comando SQL seguente in un notebook o in un editor di query SQL. Gli elementi tra parentesi quadre sono facoltativi. Sostituire il segnaposto values:

  • <catalog-name>: nome del catalog in Azure Databricks.
  • <connection-name>: l'oggetto della connessione che specifica l'origine dati, il percorso e l'accesso credentials.
  • <service-name>: nome del servizio che desideri eseguire come catalog in Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');

Pushdown supportati

Sono supportati i pushdown seguenti:

  • Filtri
  • Proiezioni
  • Limit
  • Aggregati
  • Offset
  • Gettare
  • Contiene, Inizia con, Termina con

Mapping dei tipi di dati

Quando si legge da Oracle a Spark, i tipi di dati vengono mappati nel modo seguente:

Tipo Oracle Tipo spark
MARCATEMPO CON TIMEZONE, MARCATEMPO CON LOCALE TIMEZONE TimestampType
DATE, TIMESTAMP TimestampType/TimestampNTZType*
NUMBER, FLOAT TipoDecimale
BINARY FLOAT (virgola mobile binaria) FloatType
DOUBLE binario DoubleType
CHAR, NCHAR, VARCHAR2, NVARCHAR2 TipoStringa
  • Date e TIMESTAMP vengono mappati a Spark TimestampType se spark.sql.timestampType = TIMESTAMP_LTZ (impostazione predefinita). Viene eseguito il mapping a TimestampNTZType se spark.sql.timestampType = TIMESTAMP_NTZ.