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


Руководство. Пользовательские десериализаторы .NET для Azure Stream Analytics в Visual Studio Code (предварительная версия)

Внимание

Пользовательский десериализатор .net для Azure Stream Analytics будет прекращен 30 сентября 2024 года. После этой даты невозможно использовать эту функцию.

Azure Stream Analytics поддерживает три формата данных: JSON, CSV и Avro, как показано в этом документе. С помощью пользовательских десериализаторов .NET можно обрабатывать данные в других форматах, таких как буфер протокола, Бонд и другие пользовательские форматы для облачных заданий. В этом руководстве показано, как создавать, тестировать и отлаживать настраиваемый десериализатор .NET для задания Azure Stream Analytics с помощью Visual Studio Code.

Вы изучите следующие темы:

  • Создание настраиваемого десериализатора для буфера протокола.
  • Создайте задание Azure Stream Analytics в Visual Studio Code.
  • Настройка задания Stream Analytics для использования настраиваемого десериализатора.
  • Выполните локальный запуск задания Stream Analytics для тестирования и отладки настраиваемого десериализатора.

Необходимые компоненты

Создание настраиваемого десериализатора

  1. Откройте терминал и выполните следующую команду, чтобы создать библиотеку классов .NET в Visual Studio Code для настраиваемого десериализатора ProtobufDeserializer.

    dotnet new classlib -o ProtobufDeserializer
    
  2. Перейдите в каталог проекта ProtobufDeserializer и установите пакеты NuGet Microsoft.Azure.StreamAnalytics и Google.Protobuf.

    dotnet add package Microsoft.Azure.StreamAnalytics
    
    dotnet add package Google.Protobuf
    
  3. Добавьте в проект класс MessageBodyProto и класс MessageBodyDeserializer.

  4. Создайте проект ProtobufDeserializer.

Добавление проекта Azure Stream Analytics

В Visual Studio Code нажмите клавиши CTRL+SHIFT+P, чтобы открыть палитру команд. Затем введите ASA и выберите ASA: Создать проект. Присвойте ему имя ProtobufCloudDeserializer.

Настройка задания Stream Analytics

  1. Дважды щелкните JobConfig.json. Используйте конфигурации по умолчанию, за исключением следующих параметров:

    Параметр Рекомендуемое значение
    Ресурс параметров глобального хранилища Выберите источник данных из текущей учетной записи
    Подписка на параметры глобального хранилища < ваша подписка >
    Учетная запись хранения параметров глобального хранилища < ваша учетная запись хранения >
    Учетная запись хранения параметров CustomCodeStorage < ваша учетная запись хранения >
    Контейнер параметров CustomCodeStorage < ваш контейнер хранилища >
  2. В разделе Входные данные откройте файл input.json. Выберите Добавить динамические входные данные и добавьте входные данные из Azure Data Lake Storage 2-го поколения или хранилища BLOB-объектов, а затем нажмите Выбрать из подписки Azure. Используйте конфигурации по умолчанию, за исключением следующих параметров:

    Параметр Рекомендуемое значение
    Имя. Входные данные
    Отток подписок < ваша подписка >
    Учетная запись хранения < ваша учетная запись хранения >
    Контейнер < ваш контейнер хранилища >
    Тип сериализации Выберите Настраиваемый.
    SerializationProjectPath Выберите Выбрать путь к проекту библиотеки в CodeLens и укажите проект библиотеки ProtobufDeserializer, созданный в предыдущем разделе. Выберите Собрать проект для сборки проекта.
    SerializationClassName Выберите Выбрать класс десериализации в CodeLens, чтобы автоматически подставить имя класса и путь к DLL-библиотеке.
    Имя класса MessageBodyProto.MessageBodyDeserializer

    Добавьте входные данные для настраиваемого десериализатора.

  3. Добавьте в файл ProtobufCloudDeserializer.asaql следующий запрос.

    SELECT * FROM Input
    
  4. Скачайте пример входного файла protobuf. В папке Входные данные щелкните правой кнопкой мыши файл input.json и выберите команду Добавить локальные входные данные. Затем дважды щелкните файл local_input1.jsна и используйте настройки по умолчанию, за исключением указанных ниже параметров.

    Параметр Рекомендуемое значение
    Выберите путь к локальному файлу. Выберите CodeLens, чтобы выбрать < путь к файлу для скачаированного примера входного файла protobuf>

Выполнение задания Stream Analytics

  1. Откройте файл ProtobufCloudDeserializer.asaql и выберите Запустить локально в CodeLens, а затем выберите Использовать локальные входные данные из раскрывающегося списка.

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

    Просмотрите результат локального запуска.

Вы успешно реализовали пользовательский десериализатор для задания Stream Analytics! В этом руководстве мы локально протестировали пользовательский десериализатор с локальными входными данными. Это также можно сделать на примере динамических входных данных в облаке. Для запуска задания в облаке необходимо правильно настроить входные и выходные данные. Затем отправьте задание в Azure из Visual Studio Code, чтобы запустить задание в облаке с помощью пользовательского десериализатора, который вы реализовали.

Отладка десериализатора

Десериализатор .NET можно отлаживать локально так же, как и стандартный код .NET.

  1. Добавьте точки останова в функцию .NET.

  2. Щелкните Запустить на панели действий Visual Studio Code и выберите создать файл launch.json. Создание файла запуска.

    Выберите ProtobufCloudDeserializer, а затем — Azure Stream Analytics из раскрывающегося списка. Создание файла запуска — 2.

    Отредактируйте файл launch.json, заменив <ASAScript>.asaql на ProtobufCloudDeserializer.asaql. Настройка файла запуска.

  3. Нажмите клавишу F5, чтобы запустить отладку. Программа будет останавливаться в точках останова. Это действует и для локальных, и для динамических входных данных.

    Отладка настраиваемого десериализатора.

Очистка ресурсов

Ставшие ненужными группу ресурсов, задание потоковой передачи и все связанные ресурсы можно удалить. При удалении задания будет прекращена тарификация за единицы потоковой передачи, потребляемые заданием. Если вы планируете использовать это задание в будущем, вы можете остановить и перезапустить его позже. Если вы не собираетесь продолжать использовать это задание, удалите все ресурсы, созданные этим руководством, выполнив следующие действия.

  1. В меню слева на портале Azure выберите Группы ресурсов, а затем выберите имя созданного ресурса.

  2. На странице группы ресурсов выберите Удалить, в текстовом поле введите имя ресурса для удаления и щелкните Удалить.

Следующие шаги

В этом руководстве вы узнали, как внедрить настраиваемый десериализатор .NET для входной сериализации буфера протокола. Дополнительные сведения о создании настраиваемых десериализаторов, см. в следующей статье: