Saiba como resolver problemas de falhas de runtime do U-SQL devido a alterações no runtime

Importante

O Azure Data Lake Analytics descontinuado a 29 de fevereiro de 2024. Saiba mais com este anúncio.

Para análise de dados, a sua organização pode utilizar o Azure Synapse Analytics ou o Microsoft Fabric.

O runtime U-SQL do Azure Data Lake, incluindo o compilador, o otimizador e o gestor de tarefas, é o que processa o código U-SQL.

Escolher a sua versão do runtime U-SQL

Quando submeter tarefas U-SQL a partir do Visual Studio, do SDK do ADL ou do portal do Azure Data Lake Analytics, a sua tarefa utilizará o runtime predefinido atualmente disponível. As novas versões do runtime U-SQL são lançadas regularmente e incluem atualizações secundárias e correções de segurança.

Também pode escolher uma versão de runtime personalizada; quer porque quer experimentar uma nova atualização, precisa de se manter numa versão mais antiga de um runtime ou foi fornecida uma correção para um problema reportado em que mal pode esperar pela nova atualização normal.

Atenção

Escolher um runtime diferente da predefinição tem o potencial de interromper as suas tarefas U-SQL. Utilize estas outras versões apenas para testes.

Em casos raros, Suporte da Microsoft pode afixar uma versão diferente de um runtime como a predefinição para a sua conta. Certifique-se de que reverte este pin o mais rapidamente possível. Se permanecer afixado a essa versão, esta irá expirar mais tarde.

Monitorizar a versão do runtime U-SQL das suas tarefas

Pode ver o histórico da versão de runtime que as suas tarefas anteriores utilizaram no histórico de tarefas da sua conta através do browser de tarefas do Visual Studio ou do histórico de tarefas do portal do Azure.

  1. No portal do Azure, aceda à sua conta de Data Lake Analytics.
  2. Selecione Ver Todas as Tarefas. É apresentada uma lista de todas as tarefas ativas e recentemente concluídas na conta.
  3. Opcionalmente, selecione Filtrar para o ajudar a encontrar as tarefas pelos valores Intervalo de Tempo, Nome da Tarefa e Autor .
  4. Pode ver o runtime utilizado nas tarefas concluídas.

Apresentar a versão de runtime de uma tarefa anterior

As versões de runtime disponíveis mudam ao longo do tempo. O runtime predefinido é sempre denominado "predefinição" e mantemos, pelo menos, o runtime anterior disponível durante algum tempo e disponibilizamos runtimes especiais por vários motivos. Os runtimes explicitamente nomeados geralmente seguem o seguinte formato (os itálicos são utilizados para partes variáveis e [] indica partes opcionais):

release_YYYYMMDD_adl_buildno[_modifier]

Por exemplo, release_20190318_adl_3394512_2 significa que a segunda versão da compilação 3394512 do lançamento do runtime de 18 de março de 2019 e release_20190318_adl_3394512_private significa uma compilação privada da mesma versão. Nota: a data está relacionada com quando foi feita a última entrada para essa versão e não necessariamente com a data de lançamento oficial.

Resolver problemas de versão do runtime U-SQL

Existem dois possíveis problemas de versão de runtime que pode encontrar:

  1. Um script ou algum código de utilizador está a alterar o comportamento de uma versão para outra. Estas alterações interruptivas são normalmente comunicadas antecipadamente com a publicação de notas de versão. Se encontrar uma alteração tão recente, contacte Suporte da Microsoft para comunicar este comportamento de interrupção (caso ainda não tenha sido documentado) e submeta as suas tarefas na versão de runtime mais antiga.

  2. Tem utilizado um runtime nondefault explicitamente ou implicitamente quando foi afixado à sua conta e esse runtime foi removido após algum tempo. Se encontrar runtimes em falta, atualize os scripts para serem executados com o runtime predefinido atual. Se precisar de mais tempo, contacte Suporte da Microsoft

Problemas conhecidos

  1. Referenciar a versão de ficheiro Newtonsoft.Json 12.0.3 ou posterior num script USQL causará a seguinte falha de compilação:

    "Lamentamos; Os trabalhos em execução na sua conta Data Lake Analytics provavelmente serão executados mais lentamente ou não serão concluídos. Um problema inesperado está a impedir-nos de restaurar automaticamente esta funcionalidade para a sua conta do Azure Data Lake Analytics. Os engenheiros do Azure Data Lake foram contactados para investigar."

    Onde a pilha de chamadas irá conter:
    System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Roslyn.Compilers.MetadataReader.PEFile.CustomAttributeTableReader.get_Item(UInt32 rowId)
    ...

    Solução: utilize o ficheiro Newtonsoft.Json v12.0.2 ou inferior.

  2. Os clientes poderão ver ficheiros e pastas temporários na respetiva loja. Estes são produzidos como parte da execução normal da tarefa, mas geralmente são eliminados antes que os clientes os vejam. Em determinadas circunstâncias, que são raras e aleatórias, podem permanecer visíveis. São eventualmente eliminados e nunca são contabilizados como parte do armazenamento do utilizador ou geram qualquer forma de custos. Consoante a lógica de trabalho dos clientes, podem causar problemas. Por exemplo, se a tarefa enumerar todos os ficheiros na pasta e, em seguida, comparar listas de ficheiros, poderá falhar devido à presença de ficheiros temporários inesperados. Da mesma forma, se uma tarefa a jusante enumerar todos os ficheiros de uma determinada pasta para processamento adicional, também poderá enumerar os ficheiros temporários.

    Solução: é identificada uma correção no runtime onde os ficheiros temporários serão armazenados na pasta temporária ao nível da conta em vez da pasta de saída atual. Os ficheiros temporários serão escritos nesta nova pasta temporária e serão eliminados no final da execução da tarefa.
    Uma vez que esta correção está a processar os dados do cliente, é importante que esta correção seja bem validada no MSFT antes de ser lançada. Espera-se que esta correção esteja disponível como runtime beta em meados do ano de 2021 e como runtime predefinido no segundo semestre do ano de 2021.

Ver também