Informazioni su come risolvere gli errori di runtime di U-SQL a causa di modifiche di runtime
Importante
Azure Data Lake Analytics è stato ritirato il 29 febbraio 2024. Scopri di più su con questo annuncio.
Per l'analisi dei dati, l'organizzazione può usare azure Synapse Analytics o Microsoft Fabric.
Il runtime U-SQL di Azure Data Lake, incluso il compilatore, l'ottimizzatore e il gestore di processi, è ciò che elabora il codice U-SQL.
Scelta della versione del runtime U-SQL
Quando si inviano processi U-SQL da Visual Studio, ADL SDK o dal portale di Azure Data Lake Analytics, il processo userà il runtime predefinito attualmente disponibile. Le nuove versioni del runtime U-SQL vengono rilasciate regolarmente e includono aggiornamenti secondari e correzioni di sicurezza.
È anche possibile scegliere una versione di runtime personalizzata; poiché si vuole provare un nuovo aggiornamento, è necessario rimanere in una versione precedente di un runtime o è stato fornito un hotfix per un problema segnalato in cui non è possibile attendere il nuovo aggiornamento normale.
Attenzione
La scelta di un runtime diverso da quello predefinito ha la possibilità di interrompere i processi U-SQL. Usare queste altre versioni solo per i test.
In rari casi, il supporto tecnico Microsoft può aggiungere una versione diversa di un runtime come impostazione predefinita per l'account. Assicurarsi di ripristinare il pin il prima possibile. Se rimani bloccato a quella versione, scadrà in una data successiva.
Monitoraggio della versione del runtime U-SQL dei tuoi processi
È possibile visualizzare la cronologia della versione di runtime usata dai processi precedenti nella cronologia dei processi dell'account tramite il browser processi di Visual Studio o la cronologia dei processi del portale di Azure.
- Nel portale di Azure passare all'account Data Lake Analytics.
- Selezionare Visualizza tutti i lavori. Viene visualizzato un elenco di tutti i processi attivi e appena completati nell'account.
- Facoltativamente, selezionare Filtro per aiutarti a trovare i lavori in base a intervallo di tempo, nome lavoroe autore.
- È possibile visualizzare il runtime usato nei processi completati.
Le versioni di runtime disponibili cambiano nel tempo. Il runtime predefinito viene sempre chiamato "default" e si mantiene disponibile almeno il runtime precedente per un certo periodo di tempo e si rendono disponibili runtime speciali per vari motivi. I runtime denominati in modo esplicito seguono in genere il formato seguente (i corsivi vengono usati per le parti variabili e [] indicano parti facoltative):
release_YYYYMMDD_adl_buildno[_modifier]
Ad esempio, release_20190318_adl_3394512_2 indica la seconda versione della build 3394512 della versione di runtime del 18 marzo 2019 e release_20190318_adl_3394512_private significa una build privata della stessa versione. Nota: la data è correlata a quando è stato effettuato l'ultimo commit per quella versione e non necessariamente alla data di rilascio ufficiale o prevista.
Risoluzione dei problemi di versione del runtime U-SQL
Esistono due possibili problemi di versione del runtime che è possibile riscontrare:
Uno script o un codice utente sta cambiando il comportamento da una versione alla successiva. Tali modifiche di rilievo vengono in genere comunicate in anticipo con la pubblicazione delle note di rilascio. Se si verifica una modifica di rilievo, contattare il supporto tecnico Microsoft per segnalare questo comportamento di interruzione (nel caso in cui non sia ancora stato documentato) e inviare i processi alla versione di runtime precedente.
È stato usato un runtime non predefinito in modo esplicito o implicito quando è stato aggiunto all'account e tale runtime è stato rimosso dopo qualche tempo. Se si verificano runtime mancanti, aggiornare gli script per l'esecuzione con il runtime predefinito corrente. Se è necessario più tempo, contattare il supporto tecnico Microsoft
Problemi noti
Fare riferimento al file Newtonsoft.Json versione 12.0.3 o successiva in uno script USQL causerà l'errore di compilazione seguente:
"Siamo spiacenti; I processi in esecuzione nell'account di Data Lake Analytics verranno probabilmente eseguiti più lentamente o non verranno completati. Un problema imprevisto impedisce di ripristinare automaticamente questa funzionalità nell'account di Azure Data Lake Analytics. I tecnici di Azure Data Lake sono stati contattati per indagare."
Dove lo stack di chiamate conterrà:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Roslyn.Compilers.MetadataReader.PEFile.CustomAttributeTableReader.get_Item(UInt32 rowId)
...
soluzione: usare il file Newtonsoft.Json v12.0.2 o versione precedente.
I clienti potrebbero visualizzare file e cartelle temporanei nel loro negozio. Questi vengono prodotti come parte della normale esecuzione del processo, ma vengono in genere eliminati prima che i clienti li vedano. In determinate circostanze, che sono rare e casuali, potrebbero rimanere visibili. Alla fine vengono eliminati e non vengono mai conteggiati come parte dell'archiviazione utente o generano qualsiasi forma di addebito. A seconda della logica lavorativa dei clienti, potrebbero causare problemi. Ad esempio, se il processo enumera tutti i file nella cartella e quindi confronta gli elenchi di file, potrebbe non riuscire a causa dei file temporanei imprevisti presenti. Analogamente, se un processo downstream enumera tutti i file di una determinata cartella per un'ulteriore elaborazione, potrebbe anche enumerare i file temporanei.
soluzione: una correzione viene identificata nel runtime in cui i file temporanei verranno archiviati nella cartella temporanea a livello di account anziché nella cartella di output corrente. I file temporanei verranno scritti in questa nuova cartella temporanea e verranno eliminati alla fine dell'esecuzione del processo.
Poiché questa correzione gestisce i dati dei clienti, è importante che questa correzione venga convalidata correttamente all'interno di MSFT prima del rilascio. Questa correzione dovrebbe essere disponibile come runtime beta nel corso dell'anno 2021 e come runtime predefinito nella seconda metà dell'anno 2021.