Usare script init con ambito cluster

Gli script init con ambito cluster sono script init definiti in una configurazione del cluster. Gli script init con ambito cluster si applicano sia ai cluster creati che a quelli creati per l'esecuzione dei processi.

È possibile configurare script init con ambito cluster usando l'interfaccia utente, l'interfaccia della riga di comando e richiamando l'API Clusters. Questa sezione è incentrata sull'esecuzione di queste attività usando l'interfaccia utente. Per gli altri metodi, vedere l'interfaccia della riga di comando di Databricks e l'API Clusters.

È possibile aggiungere un numero qualsiasi di script e gli script vengono eseguiti in sequenza nell'ordine specificato.

Se uno script init con ambito cluster restituisce un codice di uscita diverso da zero, l'avvio del cluster ha esito negativo. È possibile risolvere i problemi relativi agli script init con ambito cluster configurando il recapito dei log del cluster ed esaminando il log degli script init. Vedere Registrazione degli script Init.

Configurare uno script init con ambito cluster usando l'interfaccia utente

Questa sezione contiene istruzioni per configurare un cluster per eseguire uno script init usando l'interfaccia utente di Azure Databricks.

Databricks consiglia di gestire tutti gli script init come script init con ambito cluster. Se si usa il calcolo con modalità di accesso condiviso o utente singolo, archiviare gli script init nei volumi del catalogo Unity. Se si usa il calcolo con modalità di accesso condiviso senza isolamento, usare i file dell'area di lavoro per gli script init.

Per la modalità di accesso condiviso, è necessario aggiungere script init a allowlist. Vedere Allowlist libraries and init scripts on shared compute .See Allowlist libraries and init scripts on shared compute.See Allowlist libraries and init scripts on shared compute.

Per usare l'interfaccia utente per configurare un cluster per eseguire uno script init, completare la procedura seguente:

  1. Nella pagina di configurazione del cluster fare clic sull'interruttore Opzioni avanzate.
  2. Nella parte inferiore della pagina fare clic sulla scheda Script init.
  3. Nell'elenco a discesa Origine selezionare il tipo di origine Area di lavoro, Volume o ABFSS .
  4. Specificare un percorso dello script init, ad esempio uno degli esempi seguenti:
    • Per uno script init archiviato nella home directory con i file dell'area di lavoro: /Users/<user-name>/<script-name>.sh.
    • Per uno script init archiviato con volumi del catalogo Unity: /Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh.
    • Per uno script init archiviato con l'archiviazione oggetti: abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/init-script.
  5. Fare clic su Aggiungi.

In modalità accesso utente singolo viene usata l'identità dell'entità assegnata (un utente o un'entità servizio).

In modalità di accesso condiviso viene usata l'identità del proprietario del cluster.

Nota

La modalità di accesso condiviso senza isolamento non supporta i volumi, ma usa la stessa assegnazione di identità della modalità di accesso condiviso.

Per rimuovere uno script dalla configurazione del cluster, fare clic sull'icona del cestino a destra dello script. Quando si conferma l'eliminazione, verrà richiesto di riavviare il cluster. Facoltativamente, è possibile eliminare il file di script dal percorso in cui è stato caricato.

Nota

Se si configura uno script init usando il tipo di origine ABFSS , è necessario configurare le credenziali di accesso.

Databricks consiglia di usare le entità servizio Microsoft Entra ID per gestire l'accesso agli script init archiviati in Azure Data Lake Archiviazione Gen2. Per completare questa configurazione, usare la documentazione collegata seguente:

  1. Creare un'entità servizio con autorizzazioni di lettura ed elenco per i BLOB desiderati. Vedere Accedere all'archiviazione usando un'entità servizio e Microsoft Entra ID(Azure Active Directory).See Access storage using a service principle & Microsoft Entra ID(Azure Active Directory).

  2. Salvare le credenziali usando i segreti. Vedere Segreti.

  3. Impostare le proprietà nella configurazione spark e nelle variabili di ambiente durante la creazione di un cluster, come nell'esempio seguente:

    Configurazione di Spark:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    Variabili ambientali:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (Facoltativo) Eseguire il refactoring degli script init usando azcopy o l'interfaccia della riga di comando di Azure.

    È possibile fare riferimento alle variabili di ambiente impostate durante la configurazione del cluster all'interno degli script init per passare le credenziali archiviate come segreti per la convalida.

Avviso

Gli script init con ambito cluster in DBFS sono end-of-life. L'opzione DBFS nell'interfaccia utente esiste in alcune aree di lavoro per supportare i carichi di lavoro legacy e non è consigliata. È necessario eseguire la migrazione di tutti gli script init archiviati in DBFS. Per istruzioni sulla migrazione, vedere Eseguire la migrazione di script init da DBFS.

Risoluzione dei problemi relativi agli script init con ambito cluster

  • Lo script deve esistere nel percorso configurato. Se lo script non esiste, tenta di avviare il cluster o aumentare le prestazioni degli executor causa un errore.
  • Lo script init non può essere maggiore di 64 KB. Se uno script supera tale dimensione, il cluster non verrà avviato e nel log del cluster verrà visualizzato un messaggio di errore.