Depurar código C# definido pelo utilizador para tarefas U-SQL falhadas
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 U-SQL fornece um modelo de extensibilidade com C#. Nos scripts U-SQL, é fácil chamar funções C# e executar funções analíticas que a linguagem declarativa semelhante a SQL não suporta. Para saber mais sobre a extensibilidade do U-SQL, veja Guia de programação do U-SQL.
Na prática, qualquer código pode precisar de depuração, mas é difícil depurar uma tarefa distribuída com código personalizado na cloud com ficheiros de registo limitados. As Ferramentas do Azure Data Lake para Visual Studio fornecem uma funcionalidade denominada Depuração de Vértice Com Falhas, que o ajuda a depurar mais facilmente as falhas que ocorrem no seu código personalizado. Quando a tarefa U-SQL falha, o serviço mantém o estado de falha e a ferramenta ajuda-o a transferir o ambiente de falha da cloud para o computador local para depuração. A transferência local captura todo o ambiente da cloud, incluindo quaisquer dados de entrada e código de utilizador.
O vídeo seguinte demonstra a Falha na Depuração de Vértice nas Ferramentas do Azure Data Lake para Visual Studio.
Importante
O Visual Studio necessita das duas atualizações seguintes para utilizar esta funcionalidade: Microsoft Visual C++ 2015 Redistributable Update 3 e Universal C Runtime para Windows.
Transferir o vértice com falha para o computador local
Quando abre uma tarefa falhada no Azure Data Lake Tools para Visual Studio, vê uma barra de alerta amarela com mensagens de erro detalhadas no separador erro.
Selecione Transferir para transferir todos os recursos e fluxos de entrada necessários. Se a transferência não for concluída, selecione Repetir.
Selecione Abrir após a conclusão da transferência para gerar um ambiente de depuração local. Será aberta uma nova solução de depuração e, se tiver uma solução existente aberta no Visual Studio, certifique-se de que a guarda e fecha antes da depuração.
Configurar o ambiente de depuração
Nota
Antes da depuração, certifique-se de que verifica as Exceções de Runtime de Linguagem Comuns na janela Definições de Exceção (Ctrl + Alt + E).
Na nova instância do Visual Studio iniciada, poderá ou não encontrar o código fonte C# definido pelo utilizador:
O código fonte está incluído na solução de depuração
Existem dois casos em que o código fonte C# é capturado:
O código de utilizador é definido no ficheiro code-behind (normalmente denominado
Script.usql.cs
num projeto U-SQL).O código de utilizador é definido no projeto de biblioteca de classes C# para a aplicação U-SQL e registado como assemblagem com informações de depuração.
Se o código fonte for importado para a solução, pode utilizar as ferramentas de depuração do Visual Studio (watch, variáveis, etc.) para resolver o problema:
Prima F5 para iniciar a depuração. O código é executado até ser parado por uma exceção.
Abra o ficheiro de código fonte e defina pontos de interrupção e, em seguida, prima 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 de utilizador não estiver incluído no ficheiro protegido por código ou se não tiver registado a assemblagem com informações de depuração, o código fonte não será incluído automaticamente na solução de depuração. Neste caso, precisa de passos adicionais para adicionar o código fonte:
Clique com o botão direito do rato em Solução "VertexDebug" > Adicionar > Projeto Existente... para localizar o código fonte de assemblagem e adicionar o projeto à solução de depuração.
Obtenha o caminho da pasta do projeto para o projeto FailedVertexDebugHost .
Right-Click o projeto > de código fonte de assemblagem adicionado Propriedades, selecione o separador Compilar à esquerda e cole o caminho copiado que termina com \bin\debug como caminho saída de saída>. O caminho de saída final é como
<DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\
.
Após estas definições, comece a depurar com F5 e pontos de interrupção. Também pode utilizar as ferramentas de depuração do Visual Studio (watch, variáveis, etc.) para resolver o problema.
Nota
Recrie o projeto de código fonte de assemblagem sempre que modificar o código para gerar ficheiros .pdb atualizados.
Submeter novamente a tarefa
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 submeter novamente a tarefa falhada:
Para tarefas com soluções protegidas por código, copie o código C# para o ficheiro de origem protegido por código (normalmente
Script.usql.cs
).Para tarefas com assemblagens, clique com o botão direito do rato no projeto de código fonte de assemblagem na solução de depuração e registe as assemblagens de .dll atualizadas no catálogo do Azure Data Lake.
Volte a submeter a tarefa U-SQL.