Depurar um código C# definido pelo usuário em trabalhos com falha do U-SQL
Importante
O Azure Data Lake Analytics desativado em 29 de fevereiro de 2024. Saiba mais nesse comunicado.
Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.
O U-SQL oferece um modelo de extensibilidade usando C#. Em scripts U-SQL, é fácil chamar funções C# e executar funções analíticas às quais a linguagem declarativa semelhante ao SQL não dá suporte. Para saber mais sobre a extensibilidade do U-SQL, consulte Guia de programação do U-SQL.
Na prática, qualquer código pode precisar de depuração, mas é difícil depurar um trabalho distribuído com código personalizado na nuvem com arquivos de log limitados. As Ferramentas do Azure Data Lake para Visual Studio oferecem um recurso chamado Falha na Depuração de Vértice, que ajuda a depurar de forma mais fácil as falhas que ocorrem no código personalizado. Quando o trabalho do U-SQL falha, o serviço mantém o estado de falha e a ferramenta ajuda a baixar o ambiente de falha da nuvem para o computador local a fim de realizar a depuração. O download local captura todo o ambiente de nuvem, incluindo dados de entrada e código do usuário.
O vídeo a seguir demonstra a Falha na Depuração de Vértice nas Ferramentas do Azure Data Lake para Visual Studio.
Importante
O Visual Studio precisa destas duas atualizações para utilizar esse recurso: Microsoft Visual C++ 2015 Redistributable Atualização 3 e o Runtime C Universal do Windows.
Baixar o vértice com falha no computador local
Ao abrir um trabalho com falha nas Ferramentas do Azure Data Lake para Visual Studio, você verá uma barra amarela de alerta com mensagens de erro detalhadas na guia de erros.
Selecione Baixar para baixar todos os recursos e fluxos de entrada necessários. Se o download não for concluído, selecione Repetir.
Selecione Abrir após a conclusão do download para gerar um ambiente de depuração local. Uma nova solução de depuração será aberta e, se você tiver uma solução já existente aberta no Visual Studio, não deixe de salvá-la e fechá-la antes de depurar.
Configurar o ambiente de depuração
Observação
Antes da depuração, marque a opção Exceções do Common Language Runtime na janela Configurações de Exceção (Ctrl + Alt + E).
Na nova instância do Visual Studio iniciada, você pode ou não encontrar o código-fonte C# definido pelo usuário:
O código-fonte está incluído na solução de depuração
Há dois casos em que o código-fonte C# é capturado:
O código do usuário é definido no arquivo code-behind (normalmente denominado
Script.usql.cs
em um projeto do U-SQL).O código do usuário é definido no projeto de biblioteca de classes em C# para o aplicativo U-SQL e registrado como um assembly com informações de depuração.
Se o código-fonte for importado para a solução, será possível usar as ferramentas de depuração do Visual Studio (inspeção, variáveis etc.) para solucionar o problema:
Pressione F5 para iniciar a depuração. O código é executado até ser interrompido por uma exceção.
Abra o arquivo de código-fonte e defina pontos de interrupção. Em seguida, pressione F5 para depurar o código passo a passo.
O código-fonte não está incluído na solução de depuração
Se o código do usuário não estiver incluído no arquivo code-behind ou você não tiver registrado o assembly com informações de depuração, o código-fonte não será incluído automaticamente na solução de depuração. Nesse caso, serão necessárias mais etapas para adicionar o código-fonte:
Clique com o botão direito do mouse em Solução “VertexDebug” > Adicionar > Projeto Existente... para encontrar o código-fonte do assembly e adicionar o projeto à solução de depuração.
Obter o caminho da pasta do projeto FailedVertexDebugHost.
Clique com o botão direito do mouse no projeto de código-fonte do assembly adicionado > Propriedades, selecione a guia Compilar à esquerda e cole o final do caminho copiado com \bin\debug como Saída > Caminho de saída. O caminho de saída final é
<DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\
.
Depois de aplicar essas configurações, comece a depurar com a tecla F5 e os pontos de interrupção. Você também pode usar as ferramentas de depuração do Visual Studio (inspeção, variáveis, etc.) para solucionar o problema.
Observação
Recompile o projeto de código-fonte do assembly sempre depois de modificar o código para gerar os arquivos .pdb atualizados.
Reenviar o trabalho
Após a depuração, se o projeto for concluído com êxito, a janela de saída mostrará a seguinte mensagem:
The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).
Para reenviar o trabalho com falha:
Para trabalhos com soluções code-behind, copie o código C# para o arquivo de origem code-behind (geralmente,
Script.usql.cs
).Para trabalhos com assemblies, clique com o botão direito do mouse no projeto de código-fonte do assembly na solução de depuração e registre os assemblies .dll atualizados no catálogo do Azure Data Lake.
Envie novamente o trabalho do U-SQL.