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


Руководство по переносу полученных данных центров событий из служба хранилища Azure в Azure Synapse Analytics с помощью Сетка событий Azure и Функции Azure

В этом руководстве вы переносите захваченные данные из Event Hubs из хранилища BLOB-объектов Azure в Azure Synapse Analytics. Вы переносите дату в выделенный пул SQL с помощью службы "Сетка событий Azure" и "Функции Azure".

Обзор приложений

Эта схема демонстрирует рабочий процесс решения, создаваемого в рамках этого руководства.

  1. Данные, отправляемые в концентратор событий Azure, записываются в хранилище BLOB-объектов Azure.
  2. После сбора данных создается событие и отправляется в Сетку событий Azure.
  3. Сетка событий Azure переадресовывает данные этого события в приложение-функцию Azure.
  4. Приложение-функция использует URL-адрес большого двоичного объекта из данных события, чтобы извлечь большой двоичный объект из хранилища.
  5. Приложение-функция переносит данные больших двоичных объектов в Azure Synapse Analytics.

Ниже перечислены действия, которые вы выполните в этой статье.

  • Развертывание необходимой инфраструктуры для работы с руководством.
  • Публикация кода в приложение-функцию.
  • Создание подписки Сетки событий
  • Потоковая передача примера данных в Центры событий.
  • Проверка собранных данных в Azure Synapse Analytics

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

  • Знание сетки событий Azure и Центров событий Azure, особенно функции отслеживания. Если вы не знакомы с Сетка событий Azure, ознакомьтесь с Сетка событий Azure. Дополнительные сведения о функции отслеживания Центры событий Azure см. в статье "Запись событий" с помощью Центры событий Azure в Хранилище BLOB-объектов Azure или Azure Data Lake Storage.

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

  • Visual Studio с рабочими нагрузками для разработки классических приложений .NET, разработки Azure, ASP.NET и веб-разработки, разработки Node.js и разработки Python.

  • Пример проекта EventHubsCaptureEventGridDemo. Пример включает в себя:

    • WindTurbineDataGenerator. Простой издатель, который отправляет примеры данных ветряной турбины в концентратор событий с включенной функцией отслеживания.
    • FunctionDWDumper. Функция Azure, которая получает уведомление из службы уведомлений Azure Event Grid, когда файл Avro сохраняется в объекте Azure Storage. Он получает URI blob, считывает его содержимое и отправляет данные в Azure Synapse Analytics.

Развертывание инфраструктуры

В этом разделе разверните необходимую инфраструктуру с помощью шаблона Resource Manager. При развертывании шаблона создаются следующие ресурсы.

  • Концентратор событий с включенной функцией записи
  • Учетная запись хранения для захваченных файлов
  • План службы приложений для размещения приложения-функции.
  • Приложение-функция для обработки события.
  • SQL Server для размещения хранилища данных.
  • Azure Synapse Analytics (выделенный пул SQL) для хранения перенесенных данных.

Использование Azure CLI для развертывания инфраструктуры

  1. Войдите на портал Azure.

  2. Нажмите кнопку Cloud Shell, которая находится вверху.

    Снимок экрана: портал Azure, показывающий выбор кнопки Cloud Shell.

    В нижней части окна веб-браузера вы увидите открытый Cloud Shell.

    Снимок экрана: инициализированная Cloud Shell.

  3. Cloud Shell предлагает версии Bash и PowerShell. Переключение между параметрами с помощью кнопки в верхней части области терминала. Если Cloud Shell открылся как PowerShell, выберите Bash.

  4. Создайте группу ресурсов Azure, выполнив следующую команду в окне CLI:

    1. Скопируйте следующую команду и вставьте ее в окно Cloud Shell. При желании измените имя группы ресурсов и расположение.

      az group create --name rgDataMigration --location eastus
      
    2. Нажмите клавишу ВВОД.

      Приведем пример:

      user@Azure:~$ az group create --name rgDataMigration --location eastus
      
      {
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rgDataMigration",
        "location": "eastus",
        "managedBy": null,
        "name": "rgDataMigration",
        "properties": {
          "provisioningState": "Succeeded"
        },
        "tags": null,
        "type": "Microsoft.Resources/resourceGroups"
      }
      
  5. Разверните все ресурсы, упомянутые в предыдущем разделе, выполнив следующую команду CLI. Ресурсы включают концентратор событий, учетную запись хранения, приложение функций и Azure Synapse Analytics.

    1. Скопируйте эту команду и вставьте ее в окно Cloud Shell. Кроме того, можно скопировать в текстовый редактор, задать значения и скопировать команду в Cloud Shell. Если вы видите ошибку из-за имени ресурса Azure, удалите группу ресурсов, исправьте имя и повторите команду.

      Внимание

      Перед выполнением команды укажите значения для следующих сущностей:

      • Имя группы ресурсов, созданной ранее.
      • Название пространства имен концентратора событий.
      • Имя концентратора событий. Вы можете оставить имеющееся значение (hubdatamigration).
      • Имя для SQL Server.
      • Имя и пароль пользователя SQL.
      • Имя базы данных.
      • Имя учетной записи хранения
      • Имя приложения-функции.
      az deployment group create \
          --resource-group rgDataMigration \
          --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json \
          --parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password> sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-name>
      
    2. Нажмите клавишу ВВОД в окне Cloud Shell, чтобы выполнить команду. Этот процесс может занять некоторое время, так как вы создаете кучу ресурсов. В результате выполнения команды убедитесь, что сбои отсутствуют.

  6. Закройте Cloud Shell, нажав кнопку Cloud Shell на портале или кнопку X в правом верхнем углу окна Cloud Shell.

Проверка создания ресурсов

  1. На портале Azure в поле поиска введите группы ресурсов. В результатах выберите группы ресурсов.

  2. При необходимости в поле поиска введите имя группы ресурсов для фильтрации групп ресурсов.

  3. Выберите в списке свою группу ресурсов.

    Снимок экрана: выделение группы ресурсов.

  4. Убедитесь, что в группе ресурсов находятся следующие ресурсы:

    Снимок экрана: ресурсы в группе ресурсов.

Создание таблицы в Azure Synapse Analytics

В этом разделе вы создадите таблицу в выделенном пуле SQL, созданном ранее.

  1. В списке ресурсов в группе ресурсов выберите свой выделенный пул SQL.

  2. На странице выделенного пула SQL в разделе "Общие задачи" выберите редактор запросов (предварительная версия).

    Снимок экрана: выбор редактора запросов на странице выделенного пула SQL на портале Azure.

  3. Введите имя пользователя и пароль для SQL Server и нажмите кнопку "ОК". Если появится сообщение о том, что клиент может получить доступ к СЕРВЕРУ SQL Server, выберите "Разрешить IP-адрес<" >на сервере <SQL Server> и нажмите кнопку "ОК".

  4. Скопируйте и вставьте следующий код в окно запроса:

    CREATE TABLE [dbo].[Fact_WindTurbineMetrics] (
        [DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
        [MeasureTime] datetime NULL,
        [GeneratedPower] float NULL,
        [WindSpeed] float NULL,
        [TurbineSpeed] float NULL
    )
    WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
    

    Снимок экрана: редактор запросов.

  5. Не закрывайте эту вкладку или окно, так как в конце руководства это поможет вам проверить успешность создания данных.

Публикация приложения службы "Функции Azure"

Сначала получите профиль публикации для приложения-функции на портале Azure. Затем используйте профиль публикации для публикации проекта или приложения службы "Функции Azure" из Visual Studio.

Скачать профиль публикации

  1. На странице "Группа ресурсов" выберите приложение "Функции Azure".

    Снимок экрана: выделение приложения-функции в списке ресурсов для группы ресурсов.

  2. На странице функционального приложения выберите Получить профиль публикации.

    Снимок экрана: выделение кнопки **Скачать профиль публикации** на панели команд страницы приложения-функции.

  3. Загрузите и сохраните файл во вложенную папку FunctionEGDDumper в папке EventHubsCaptureEventGridDemo.

Использование профиля публикации для публикации приложения службы "Функции Azure"

  1. Запустите Visual Studio.

  2. Откройте решение EventHubsCaptureEventGridDemo.sln, скачанное с портала GitHub во время выполнения предыдущих шагов. Его можно найти в папке /samples/e2e/EventHubsCaptureEventGridDemo.

  3. В обозревателе решений щелкните правой кнопкой мыши проект FunctionEGDWDumper и выберите Публиковать.

  4. На следующем экране выберите Пуск или Добавить профиль публикации.

  5. В диалоговом окне Публикация выберите значение Импорт профиля для параметра Целевой объект и нажмите Далее.

    Снимок экрана: выделение **Импортировать профиль** в диалоговом окне **Публикация**.

  6. На вкладке "Импорт профиля" выберите файл параметров публикации, сохраненный ранее в папке FunctionEGDWDumper . Затем нажмите кнопку "Готово".

  7. Когда Visual Studio настраивает профиль, выберите "Опубликовать". Убедитесь, что публикация прошла успешно.

  8. В веб-браузере с открытой страницей "Функция Azure" выберите "Функции " в средней области. Убедитесь, что в списке отображается функция EventGridTriggerMigrateData. Если вы не видите ее, попробуйте повторить публикацию из Visual Studio и обновите страницу на портале.

    Снимок экрана: подтверждение создания функции.

После публикации функции вы можете подписаться на событие.

Настройте подписку на событие

  1. На новой вкладке или новом окне веб-браузера войдите в портал Azure.

  2. На портале Azure найдите и выберите группы ресурсов.

  3. При необходимости в поле поиска введите имя группы ресурсов для фильтрации групп ресурсов.

  4. Выберите в списке свою группу ресурсов.

  5. Выберите Пространство имен Центров событий из списка ресурсов.

  6. На странице пространства имен Центров событий выберите "События" и нажмите кнопку "+ Подписка на события " на панели инструментов.

    Снимок экрана страницы

  7. На странице Создать подписку на событие выполните следующие действия:

    1. Укажите имя для подписки на событие.

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

    3. В поле Тип конечной точки выберите Функция Azure.

    4. В разделе Конечная точка щелкните ссылку.

    5. На странице Выберите функцию Azure выполните следующие действия, если поля не заполнены автоматически:

      1. Выберите подписку Azure, в которой размещена функция Azure.
      2. Выберите группу ресурсов для этой функции.
      3. Выберите приложение-функцию.
      4. Выберите слот развертывания.
      5. Выберите функцию EventGridTriggerMigrateData.
    6. На странице Выберите функцию Azure щелкните Подтвердить выбор.

    7. Теперь вернитесь на страницу Создать подписку на события и щелкните Создать.

      Снимок экрана: страница

  8. Убедитесь, что подписка на событие успешно создана. Перейдите на вкладку Подписки на события на странице События для пространства имен Центров событий.

    Снимок экрана: вкладка

Запуск приложения для создания данных

Вы завершили настройку вашего концентратора событий, выделенного пула SQL (прежнее название — хранилище данных SQL), функционального приложения Azure и подписки на события. Перед запуском приложения, которое создает данные для концентратора событий, настройте несколько значений.

  1. На портале Azure, как и раньше, перейдите к группе ресурсов.

  2. Выберите пространство имен Центров событий.

  3. На странице пространства имен Центров событий выберите политики общего доступа.

  4. В списке политик выберите RootManageSharedAccessKey.

    Снимок экрана: страница политик общего доступа для пространства имен Центров событий.

  5. Нажмите кнопку копирования рядом со строкой первичного подключения.

  6. Вернитесь к решению Visual Studio.

  7. Щелкните правой кнопкой мыши проект WindTurbineDataGenerator и выберите Назначить запускаемым проектом.

  8. В проекте WindTurbineDataGenerator откройте файл program.cs.

  9. Замените <EVENT HUBS NAMESPACE CONNECTION STRING> строкой подключения, которую вы скопировали на портале.

  10. Если вы использовали другое имя для концентратора событий, отличное от hubdatamigration, замените <EVENT HUB NAME> на имя этого концентратора событий.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  11. Постройте решение. Запустите приложение WindTurbineGenerator.exe.

  12. Через пару минут на другой вкладке браузера, где открыто окно запросов, выполните запрос по перенесенным данным в таблице хранилища данных.

    select * from [dbo].[Fact_WindTurbineMetrics]
    

    Снимок экрана: результаты запроса.

Внимание

В этом примере использование строки подключения для проверки подлинности в пространстве имен Центров событий Azure упрощает учебник. Мы рекомендуем использовать проверку подлинности идентификатора Microsoft Entra в рабочих средах. При использовании приложения активируйте управляемую идентификацию для приложения и назначьте ей соответствующую роль (Владелец Центров событий Azure, Отправитель данных Центров событий Azure или Приемник данных Центров событий Azure) в пространстве имен Центров событий Azure. Дополнительные сведения см. в разделе "Авторизация доступа к центрам событий" с помощью идентификатора Microsoft Entra.

Мониторинг решения

Этот раздел поможет вам выполнять мониторинг и устранение неполадок для решения.

Просмотр собранных данных в учетной записи хранения

  1. Перейдите к группе ресурсов и выберите учетную запись хранения, которая используется для сбора данных о событиях.

  2. На странице учетной записи хранения выберите браузер хранилища.

  3. Разверните раздел Контейнеры BLOB-объектов и выберите windturbinecapture.

  4. Откройте в области справа папку с таким же именем, как у пространства имен Центров событий.

  5. Откройте папку с таким же именем, как у концентратора событий (hubdatamigration).

  6. Просмотрите вложенные папки и найдите файлы AVRO. Приведем пример:

    Снимок экрана: захваченный файл в хранилище.

Проверка того, что триггер Сетки событий вызвал функцию

  1. Перейдите к используемой группе ресурсов и выберите приложение-функцию.

  2. Перейдите на вкладку "Функции" на средней панели.

  3. В списке выберите функцию EventGridTriggerMigrateData.

  4. На странице Функция выберите в меню слева пункт Монитор.

  5. Выберите Настроить, чтобы настроить сбор журналов вызовов в Application Insights.

  6. Создайте новый ресурс Application Insights или выберите существующий.

  7. Вернитесь на страницу Монитор для этой функции.

  8. Убедитесь, что клиентское приложение (WindTurbineDataGenerator), отправляющее события, по-прежнему выполняется. Если это не так, запустите это приложение.

  9. Подождите несколько минут (5 и более), а затем нажмите кнопку Обновить, чтобы просмотреть вызовы функций.

    Снимок экрана: вызовы функции.

  10. Чтобы просмотреть сведения, выберите вызов.

    Служба "Сетка событий" распределяет данные события между подписчиками. В следующем примере показаны данные событий, сгенерированные при записи потока данных, проходящих через концентратор событий, в большой двоичный объект. В частности, обратите внимание, что свойство fileUrl в объекте data указывает на большой двоичный объект в хранилище. Приложение-функция использует этот URL-адрес для получения файла большого двоичного объекта с записанными данными.

    {
      "topic": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/rgDataMigration/providers/Microsoft.EventHub/namespaces/spehubns1207",
      "subject": "hubdatamigration",
      "eventType": "Microsoft.EventHub.CaptureFileCreated",
      "id": "4538f1a5-02d8-4b40-9f20-36301ac976ba",
      "data": {
        "fileUrl": "https://spehubstorage1207.blob.core.windows.net/windturbinecapture/spehubns1207/hubdatamigration/0/2020/12/07/21/49/12.avro",
        "fileType": "AzureBlockBlob",
        "partitionId": "0",
        "sizeInBytes": 473444,
        "eventCount": 2800,
        "firstSequenceNumber": 55500,
        "lastSequenceNumber": 58299,
        "firstEnqueueTime": "2020-12-07T21:49:12.556Z",
        "lastEnqueueTime": "2020-12-07T21:50:11.534Z"
      },
      "dataVersion": "1",
      "metadataVersion": "1",
      "eventTime": "2020-12-07T21:50:12.7065524Z"
    }
    

Проверка того, что данные успешно сохранены в выделенном пуле SQL

На вкладке браузера, где открыто окно запросов, выполните запрос по перенесенным данным в таблице выделенного пула SQL.

Снимок экрана: окончательные результаты запроса.