Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come connettere la zona ACZ (Analytics Consumption Zone) a Azure Databricks per eseguire query Azure Data Manager per i dati energetici. Dopo aver completato questi passaggi, è possibile eseguire query sui dati OSDU® usando Azure Databricks, SQL e notebook.
Note
Durante l'anteprima, ACZ è disponibile solo nelle istanze del livello sviluppatore e richiede l'uso di elenchi di elementi consentiti. Seguite le indicazioni in Abilitare la zona di utilizzo di Analytics, e contattate il rappresentante Microsoft.
Prerequisiti
- Una sottoscrizione di Azure con un'istanza di Azure Data Manager for Energy (livello Developer) in cui ACZ è abilitato.
- ACZ configurato con almeno un tipo di dati.
- Un'area di lavoro di Azure Databricks nella stessa area di Azure del tuo account di archiviazione ACZ.
- Autorizzazioni di collaboratore o proprietario per l'account di archiviazione ACZ.
- Autorizzazioni per creare risorse in Azure Databricks.
Panoramica dell'installazione
Seguire questa procedura per connettere i dati ACZ a Azure Databricks. Dopo l'installazione, è possibile creare tabelle esterne per più set di dati ACZ usando le stesse credenziali di archiviazione e la stessa posizione esterna.
| Step | Attività | Description |
|---|---|---|
| 1 | Creare un connettore di accesso per Azure Databricks | Fornisce un'identità gestita per l'accesso sicuro all'archiviazione. |
| 2 | Concedere le autorizzazioni al connettore di accesso | Assegna le autorizzazioni di archiviazione e notifica degli eventi. |
| 3 | Creare credenziali di archiviazione in Azure Databricks | Collega il connettore di accesso a Azure Databricks. |
| 4 | Crea una sede esterna | Definisce il percorso di archiviazione ACZ e convalida le autorizzazioni. |
| 5 | Creare uno schema e una tabella esterna | Registra i set di dati ACZ come tabelle queryable. |
Passaggio 1: Creare un connettore di accesso per Azure Databricks
Il connettore di accesso fornisce un'identità gestita che Azure Databricks usa per l'autenticazione per Archiviazione di Azure.
Nel portale Azure cercare Access Connector per Azure Databricks.
Fare clic su Crea.
Nella scheda Informazioni di base configurare queste impostazioni:
- Sottoscrizione: selezionare la propria sottoscrizione.
- Gruppo di risorse: selezionare o creare un gruppo di risorse.
-
Nome: immettere un nome, ad esempio
acz-databricks-access-connector. - Area: selezionare la stessa area dell'account di archiviazione ACZ.
Seleziona Rivedi e crea e quindi seleziona Crea.
Al termine della distribuzione, vai alla risorsa del connettore di accesso.
Nella pagina Panoramica copiare l'ID della risorsa. Questo ID risorsa viene usato nel passaggio 3.
L'ID risorsa ha il seguente formato:
/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Databricks/accessConnectors/{connector-name}
Passaggio 2: Concedere le autorizzazioni al connettore di accesso
Il connettore di accesso richiede autorizzazioni sia a livello di account di archiviazione che a livello di gruppo di risorse per abilitare la gestione delle tabelle Delta Lake e l'aggiornamento dei dati basato su eventi.
Concedi autorizzazioni all'account di archiviazione
Nel portale di Azure passare all'account di archiviazione ACZ (ad esempio,
aczstorage).Nel menu a sinistra selezionare Controllo di accesso (IAM) .
Selezionare Aggiungi>Aggiungi assegnazione di ruolo.
Assegnare i tre ruoli seguenti all'identità gestita del connettore di accesso. Per ogni ruolo:
- Nella scheda Ruolo cercare e selezionare il ruolo.
- Seleziona Avanti.
- Nella scheda Membri :
- In Assegna accesso a, selezionare Identità gestita.
- Scegliere + Seleziona membri.
- In Identità gestita selezionare Connettore di accesso per Azure Databricks.
- Selezionare il connettore di accesso dall'elenco.
- Scegli Seleziona.
- Seleziona Rivedi + assegna.
Ruoli richiesti:
- Contributore di dati BLOB di archiviazione: consentire la lettura e la scrittura di dati Blob.
- Collaboratore ai dati della coda di archiviazione: consente di leggere i messaggi della coda di archiviazione per le notifiche degli eventi.
- Collaboratore dell'account di archiviazione: consente di gestire la configurazione dell'account di archiviazione.
Concedere le autorizzazioni per il gruppo di risorse
Passare al gruppo di risorse che contiene l'area di lavoro Azure Databricks e il connettore di accesso.
Nel menu a sinistra selezionare Controllo di accesso (IAM) .
Assegnare i due ruoli seguenti all'identità gestita del connettore di accesso (ripetere il processo di assegnazione dei ruoli):
Ruoli richiesti:
- Collaboratore EventGrid EventSubscription: consente di creare e gestire sottoscrizioni Griglia di eventi di Azure.
- Collaboratore ai dati di EventGrid: consente l'invio di eventi agli argomenti di Griglia di eventi.
Queste autorizzazioni di Griglia di eventi consentono Azure Databricks di rilevare automaticamente quando vengono scritti nuovi file Delta nell'archiviazione ACZ, migliorando le prestazioni delle query evitando analisi complete delle cartelle.
Importante
Attendere due o tre minuti dopo aver assegnato tutti i ruoli per le autorizzazioni da propagare prima di procedere al passaggio successivo.
Passaggio 3: Creare credenziali di archiviazione in Databricks
Le credenziali di archiviazione archiviano in modo sicuro le informazioni di autenticazione per l'archiviazione cloud.
- Accedere all'area di lavoro di Azure Databricks.
- Nella barra laterale sinistra selezionare Catalogo.
- Nella pagina Catalogo selezionare Crea e quindi selezionare Crea credenziali.
- Configurare le credenziali:
- Tipo di credenziale: selezionare Identità gestita di Azure.
-
Nome credenziale: immettere un nome , ad esempio
acz_cred. - ID del connettore di accesso: Incolla l'ID della risorsa dal Passaggio 1.
- Fare clic su Crea.
Passaggio 4: Creare una posizione esterna
I percorsi esterni definiscono i percorsi di archiviazione a cui Azure Databricks possono accedere usando le credenziali di archiviazione. Questo passaggio verifica che tutte le autorizzazioni necessarie siano configurate correttamente.
Tip
Indica come percorso esterno la cartella principale di ACZ (non una cartella specifica del set di dati). È possibile usare questa configurazione per creare più tabelle per set di dati ACZ diversi usando la stessa posizione.
Nella pagina Catalogo selezionare Crea e quindi selezionare Crea una posizione esterna.
Configura la posizione:
-
Nome percorso: immettere un nome (ad esempio,
acz_location) -
URL: Immettere il percorso radice di ACZ:
Sostituire:abfss://{container-name}@{storage-account}.dfs.core.windows.net/acz-{instance-id}/-
{container-name}: nome del contenitore ACZ (ad esempio,aczcontainer) -
{storage-account}: nome dell'account di archiviazione (ad esempio,aczstorage) -
{instance-id}: ID dell'istanza di ACZ (ad esempio,bea199c0690b)
-
-
Credenziali di archiviazione: selezionare le credenziali create nel passaggio 3 (ad esempio,
acz_cred)
-
Nome percorso: immettere un nome (ad esempio,
Fare clic su Crea.
Dopo la creazione, selezionare il percorso esterno dall'elenco e quindi selezionare Test connessione per verificare che tutte le autorizzazioni siano configurate correttamente.
Il test verifica la presenza di:
- Lettura: accesso alla lettura dei dati BLOB.
- Elenco: accesso a cartelle e file di elenco.
- Percorso esistente: verifica che il percorso ACZ sia accessibile.
- Spazio dei nomi gerarchico abilitato: conferma che le funzionalità di Data Lake Storage Gen2 sono abilitate.
- Eventi di file letti: accesso alle notifiche degli eventi di archiviazione (richiede autorizzazioni di Griglia di eventi).
Configurazione di esempio:
-
Nome posizione:
acz_location -
URL:
abfss://aczcontainer@aczstorage.dfs.core.windows.net/acz-bea199c0690b/ -
Credenziali di archiviazione:
acz_cred
In alternativa, creare il percorso esterno usando SQL:
CREATE EXTERNAL LOCATION acz_location
URL 'abfss://aczcontainer@aczstorage.dfs.core.windows.net/acz-bea199c0690b/'
WITH (STORAGE CREDENTIAL acz_cred);
Note
Per trovare l'ID dell'istanza di ACZ, vai al contenitore di archiviazione di ACZ nel portale di Azure. La cartella ACZ segue il modello acz-{instance-id}.
Passaggio 5: Creare uno schema e una tabella esterna
Creare uno schema per organizzare le tabelle e quindi registrare il set di dati ACZ Delta Lake come tabella esterna.
In Azure Databricks, apri un editor SQL o un notebook.
Creare uno schema (detto anche database):
CREATE SCHEMA IF NOT EXISTS `{catalog-name}`.osdudata;Sostituire
{catalog-name}con il nome del catalogo Azure Databricks.Creare una tabella esterna che punti al set di dati ACZ:
CREATE EXTERNAL TABLE IF NOT EXISTS `{catalog-name}`.osdudata.catalogdata USING DELTA LOCATION 'abfss://{container-name}@{storage-account}.dfs.core.windows.net/acz-{instance-id}/osducatalog';In questo esempio viene creata una tabella per il
osducatalogset di dati. Per creare tabelle per altri set di dati ACZ, passareosducatalogal nome del set di dati , ad esempiowellboreDDMS.Esempio per un catalogo denominato
acz-catalog:CREATE SCHEMA IF NOT EXISTS `acz-catalog`.osdudata; CREATE EXTERNAL TABLE IF NOT EXISTS `acz-catalog`.osdudata.catalogdata USING DELTA LOCATION 'abfss://aczcontainer@aczstorage.dfs.core.windows.net/acz-bea199c0690b/osducatalog';
Interrogare i dati ACZ
Dopo aver creato le tabelle esterne, è possibile eseguire query sui dati ACZ usando query SQL standard in Azure Databricks notebook o un editor SQL.
Modello di query SQL:
-- Count total records
SELECT COUNT(*) AS total_records
FROM `<catalog-name>`.<schema-name>.<table-name>;
-- Count records by kind
SELECT kind, COUNT(*) AS record_count
FROM `<catalog-name>`.<schema-name>.<table-name>
GROUP BY kind
ORDER BY record_count DESC;
-- Preview data
SELECT *
FROM `<catalog-name>`.<schema-name>.<table-name>
LIMIT 10;
-- Show table schema
DESCRIBE TABLE `<catalog-name>`.<schema-name>.<table-name>;
-- Show table details including storage location
DESCRIBE TABLE EXTENDED `<catalog-name>`.<schema-name>.<table-name>;
Query di esempio per osducatalog:
-- Count records
SELECT COUNT(*) AS total_records
FROM `acz-catalog`.osdudata.catalogdata;
-- Count records by kind
SELECT kind, COUNT(*) AS record_count
FROM `acz-catalog`.osdudata.catalogdata
GROUP BY kind
ORDER BY record_count DESC;
-- Preview data
SELECT *
FROM `acz-catalog`.osdudata.catalogdata
LIMIT 10;
-- Query specific columns (adjust based on your schema)
SELECT id, kind, createTime
FROM `acz-catalog`.osdudata.catalogdata
LIMIT 10;
Comprendere la differenza tra posizioni esterne e tabelle esterne
| Componente | Percorso | Scopo |
|---|---|---|
| Posizione esterna | abfss://container@storage.dfs.core.windows.net/acz-{id}/ |
Definisce il limite di accesso, ovvero la cartella radice in cui Azure Databricks può leggere i dati. |
| Tabella esterna | abfss://container@storage.dfs.core.windows.net/acz-{id}/osducatalog |
Indica un set di dati specifico relativo al Lago Delta presente nella posizione esterna. |
Perché la posizione è importante:
- La posizione esterna consente un accesso esteso alla cartella radice di ACZ.
- Usando la stessa posizione, è possibile creare più tabelle, ad esempio
osducatalogewellboreDDMS. - Questa configurazione segue le procedure consigliate per il catalogo Unity per organizzare l'accesso a più set di dati.
Troubleshooting
Errori di accesso negato
Se vengono visualizzati gli errori "403 Forbidden" o "Access denied":
- Verificare che il connettore di accesso abbia tutti i ruoli necessari:
- Nell'account di archiviazione: Collaboratore ai dati del BLOB di archiviazione, Collaboratore ai dati della coda di archiviazione e Collaboratore account di archiviazione
- Nel gruppo di risorse: EventGrid EventSubscription Contributor e EventGrid Data Contributor
- Attendere due o tre minuti dopo l'assegnazione del ruolo affinché le autorizzazioni vengano propagate.
- Verificare che l'ID risorsa delle credenziali di archiviazione sia corretto.
- Verificare che l'ID dell'istanza di ACZ nel percorso corrisponda esattamente al nome della cartella nella risorsa di archiviazione (incluso qualsiasi suffisso come
b).
Errori del test di connessione della posizione esterna
Se Connessione di test nella configurazione della posizione esterna mostra errori:
- Verificare che siano presenti tutte e cinque le assegnazioni di ruolo (tre nell'account di archiviazione e due nel gruppo di risorse).
- Verificare che le autorizzazioni del gruppo di risorse siano assegnate allo stesso gruppo di risorse che contiene sia l'area di lavoro Azure Databricks che il connettore di accesso.
- Assicurarsi che lo spazio dei nomi gerarchico sia abilitato nell'account di archiviazione (obbligatorio per Data Lake Storage Gen2).
- Attendere alcuni minuti e riprovare. La propagazione dei ruoli può richiedere tempo.
Errori di tipo «percorso non trovato»
Se viene visualizzato l'errore "Path does not exist" (Percorso non esistente):
- Nel portale di Azure passare all'account di archiviazione ACZ.
- Passare a Contenitori>
{container-name}. - Verificare che il nome della cartella ACZ corrisponda esattamente al percorso SQL , ad esempio
acz-bea199c0690be nonacz-bea199c0690. - Verificare che la cartella del set di dati esista , ad esempio
osducatalog.
Errori dei metadati della tabella delta
Se vengono visualizzati errori relativi all'assenza di _delta_log:
- Verificare che ACZ abbia completato almeno una sincronizzazione dei dati per il set di dati.
- Verificare che il
LOCATIONpercorso punti alla cartella radice Delta (non una sottocartella). - Verificare che il set di dati esista in ACZ controllando il contenitore di archiviazione.
Verificare la struttura di cartelle Delta usando il interfaccia della riga di comando di Azure:
# List ACZ datasets
az storage fs directory list \
--account-name <storage-account> \
--file-system <container-name> \
--path "acz-<instance-id>" \
--auth-mode login \
--query "[].name" -o table
# Check for _delta_log folder in a specific dataset
az storage fs directory list \
--account-name <storage-account> \
--file-system <container-name> \
--path "acz-<instance-id>/<dataset-folder>" \
--auth-mode login \
--query "[?name=='_delta_log'].name" -o table