Поделиться через


Отладка пользовательского кода C# для неудачных заданий U-SQL

Это важно

Azure Data Lake Analytics вышел из эксплуатации 29 февраля 2024 года. Дополнительные сведения см. в этом объявлении.

Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.

U-SQL предоставляет модель расширяемости с помощью C#. В сценариях U-SQL легко вызывать функции C# и выполнять аналитические функции, которые не поддерживаются декларативными языками, подобными SQL. Дополнительные сведения о расширяемости U-SQL см. в руководстве по программированию U-SQL.

На практике любой код может потребовать отладки, но трудно отлаживать распределенное задание с пользовательским кодом в облаке с ограниченными файлами журнала. Средства Azure Data Lake для Visual Studio предоставляют функцию Отладка ошибки вершины, которая упрощает отладку сбоев, возникающих в пользовательском коде. Если задание U-SQL завершается сбоем, служба сохраняет состояние сбоя, а средство помогает скачать среду сбоя облака на локальный компьютер для отладки. Локальная загрузка захватывает всю облачную среду, включая входные данные и пользовательский код.

В следующем видео показано сбой отладки вершин в Azure Data Lake Tools для Visual Studio.

Это важно

Visual Studio требует следующих двух обновлений для использования этой функции: распространяемого обновления 3 microsoft Visual C++ 2015 и универсальной среды выполнения C для Windows.

Загрузить ошибочную вершину на локальный компьютер

После открытия неудачного задания в Azure Data Lake Tools для Visual Studio вы видите желтую строку предупреждения с подробными сообщениями об ошибках на вкладке 'Ошибки'.

  1. Выберите "Скачать ", чтобы скачать все необходимые ресурсы и входные потоки. Если скачивание не завершено, нажмите кнопку "Повторить".

  2. Нажмите кнопку "Открыть" после завершения скачивания, чтобы создать локальную среду отладки. Откроется новое решение отладки, и если у вас есть существующее решение, открытое в Visual Studio, обязательно сохраните и закройте его перед отладкой.

Снимок экрана: задание Data Lake Analytics в USQL с выделенной кнопкой

Настройка среды отладки

Примечание.

Перед отладкой обязательно проверьте исключения среды CLR в окне параметров исключения (CTRL+ALT+E).

Снимок экрана: определяемый пользователем исходный код C# с параметрами исключений с набором исключений среды CLR.

В новом запущенном экземпляре Visual Studio можно или не найти определяемый пользователем исходный код C#:

  1. Я могу найти исходный код в решении

  2. Не удается найти исходный код в решении

Исходный код включен в решение отладки

Существует два случая, когда исходный код C# фиксируется:

  1. Пользовательский код определяется в файле программной части (обычно называется Script.usql.cs в проекте U-SQL).

  2. Пользовательский код определен в проекте библиотеки классов C# для приложения U-SQL и зарегистрирован в качестве сборки со сведениями об отладке.

Если исходный код импортируется в решение, можно использовать средства отладки Visual Studio (контрольные, переменные и т. д.), чтобы устранить проблему:

  1. Нажмите клавишу F5, чтобы начать отладку. Код запускается до тех пор, пока он не будет остановлен исключением.

  2. Откройте файл исходного кода и задайте точки останова, а затем нажмите клавишу F5 , чтобы выполнить отладку кода по шагу.

    Снимок экрана: определяемый пользователем код с набором точек останова, показывающий исключение в выделенной строке.

Исходный код не включен в решение отладки

Если пользовательский код не включен в файл программной части или вы не зарегистрировали сборку с данными отладки, исходный код не включается автоматически в решение отладки. В этом случае вам потребуется выполнить дополнительные действия, чтобы добавить исходный код:

  1. Щелкните правой кнопкой мыши решение "VertexDebug" > Добавить > существующий проект, чтобы найти исходный код сборки и добавить проект в решение отладки.

    Снимок экрана: обозреватель решений в Visual Studio с решением VertexDebug.

  2. Получите путь к папке проекта для FailedVertexDebugHost.

  3. Right-Click свойства добавленного проекта исходного кода сборки>, выберите вкладку Сборка слева и вставьте скопированный путь, заканчивающийся \bin\debug, в качестве пути вывода>. Окончательный выходной путь выглядит как <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Снимок экрана: вкладка сборки в Visual Studio Code с исходящим путем, выделенным в разделе

После выполнения этих параметров начните отладку с помощью F5 и точек останова. Для устранения проблемы также можно использовать средства отладки Visual Studio (контрольные, переменные и т. д.).

Примечание.

Перестройте проект исходного кода сборки каждый раз после изменения кода, чтобы создать обновленные PDB-файлы.

Повторная отправка задания

После отладки, если проект завершится успешно, в выходном окне отобразится следующее сообщение:

The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).

Снимок экрана: окно вывода с выделенной строкой завершения.

Чтобы повторно отправить неудачное задание, выполните следующие действия:

  1. Для заданий с решениями заднего кода скопируйте код C# в файл закадрового кода (обычно Script.usql.cs).

  2. Для заданий с сборками щелкните правой кнопкой мыши проект исходного кода сборки в решении отладки и зарегистрируйте обновленные сборки .dll в каталоге Azure Data Lake.

  3. Повторно отправьте задание U-SQL.

Дальнейшие действия