Настройка приема потоковой передачи в пуле Data Explorer (предварительная версия) в Azure Synapse

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

  • Требуется задержка меньше секунды.
  • Для оптимизации операционной обработки многих таблиц, когда поток данных в каждой таблице относительно мал (несколько записей в секунду), а общий объем приема данных большой (тысячи записей в секунду).

Если поток данных в каждой таблице большой (более 4 ГБ в час), рассмотрите возможность использования приема пакетов.

Дополнительные сведения о методах приема данных см. в статье Общие сведения о приеме данных.

Выбор соответствующего типа приема потоковой передачи

Поддерживаются два типа приема потоковой передачи:

Тип приема Описание
Концентратор событий или Центр Интернета вещей Концентраторы настраиваются как источники данных потоковой передачи таблицы.
Сведения об установке см. в концентраторе событий.
Настраиваемый прием Для пользовательского приема данных необходимо записать приложение, использующее одну из клиентских библиотек Data Explorer в Azure Synapse.
Используйте сведения в этом разделе для настройки пользовательского приема. Вы также можете ознакомиться с примером приложения для приема потоковой передачи с использованием C#.

Используйте следующую таблицу, чтобы выбрать тип приема, подходящий для вашей среды.

Критерий Концентратор событий или Центр Интернета вещей Настраиваемая загрузка
Задержка данных между инициированием приема и данными, доступными для запроса Более длительная задержка Более короткая задержка
Затраты на разработку Быстрая и простая установка, без дополнительных затрат на разработку Высокая нагрузка при разработке приложения, принимающего данные, обработки ошибок и обеспечения согласованности данных.

Примечание

Прием данных из концентратора событий в пулы Data Explorer не будет работать, если ваша рабочая область Synapse использует управляемую виртуальную сеть с включенной защитой от утечки данных.

Предварительные требования

  • Подписка Azure. Создайте бесплатную учетную запись Azure.

  • Создать пул Data Explorer с помощью Synapse Studio или портала Azure

  • Создать базу данных Data Explorer.

    1. В Synapse Studio в области слева выберите элемент Данные.

    2. Выберите + (Добавить новый ресурс) >Пул Data Explorer, а затем используйте следующие сведения:

      Параметр Рекомендуемое значение Описание
      Имя пула contosodataexplorer Имя пула Data Explorer, который вы будете использовать.
      Имя TestDatabase Имя базы данных должно быть уникальным в пределах кластера.
      Срок хранения по умолчанию 365. Интервал времени (в днях), в течение которого данные будут гарантированно доступны для запросов. Интервал времени измеряется с момента приема данных.
      Период кэширования по умолчанию 31 Интервал времени (в днях), в течение которого необходимо хранить часто запрашиваемые данные в хранилище SSD или ОЗУ, а не в долговременном хранилище.
    3. Чтобы создать базу данных, выберите Создать. Создание обычно занимает меньше минуты.

  • Получите конечные точки приема запросов и данных.
    1. В Synapse Studio в области навигации слева выберите Управление>Пулы Data Explorer.

    2. Выберите пул Data Explorer, сведения о котором нужно просмотреть.

      Снимок экрана: экран

    3. Запишите конечные точки запроса и приема данных. Используйте конечную точку запроса в качестве кластера при настройке подключений к пулу Data Explorer. При настройке пакетов SDK для приема данных используйте конечную точку приема данных.

      Снимок экрана: панель свойств пулов Data Explorer с адресами универсального кода ресурса запроса и приема данных.

Рекомендации по обеспечению производительности и эксплуатации

Основные факторы, которые могут повлиять на прием потоковой передачи:

  • Спецификация вычислений. Производительность приема потоковой передачи и масштабирование емкости с увеличением размера пула Data Explorer. Число параллельных запросов приема ограничено шестью на ядро. Например, для 16-ядерной рабочей нагрузки, такой как оптимизированная для вычислений (больших) и оптимизированная для операций в хранилище (больших), максимальный поддерживаемый объем нагрузки составляет 96 параллельных запросов приема. Например, для двухъядерной рабочей нагрузки, такой как оптимизированная для вычислений (очень малых), максимальный поддерживаемый объем нагрузки составляет 12 параллельных запросов приема.
  • Ограничение на объем данных. Предельный объем данных для запроса на прием потоковой передачи составляет 4 МБ.
  • Обновления схемы. Обновления схемы, такие как создание и изменение таблиц и сопоставлений приема, для службы приема потоковой передачи могут выполняться до 5 минут. Дополнительные сведения см. в статье Прием потоковой передачи данных и изменения схемы.
  • Емкость SSD. При включении приема потоковой передачи в пуле Data Explorer, даже если данные не принимаются через потоковую передачу, для данных приема потоковой передачи используется часть локального диска SSD компьютеров пула Data Explorer. Это уменьшает объем хранилища, доступный для горячего кэша.

Включение приема потоковой передачи в пуле Data Explorer

Прежде чем вы сможете использовать прием потоковой передачи, необходимо включить эту возможность в пуле Data Explorer и определить политику приема потоковой передачи. Вы можете включить эту возможность при создании пула Data Explorer или добавить ее в уже существующий пул.

Предупреждение

Перед включением приема потоковой передачи ознакомьтесь с ограничениями.

Включение приема потоковой передачи при создании нового пула Data Explorer

Вы можете включить прием потоковой передачи при создании нового пула Data Explorer с помощью Azure Synapse Studio или портала Azure.

При создании пула Data Explorer с помощью действий, описанных в разделе Создание пула Data Explorer, используя Synapse Studio, на вкладке Дополнительные параметры выберите Прием потоковой передачи>Включено.

Включение приема потоковой передачи при создании пула Data Explorer в обозревателе данных Azure Synapse.

Включение приема потоковой передачи в уже существующем пуле Data Explorer

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

  1. На портале Azure перейдите к пулу Data Explorer.
  2. Под разделом Параметры выберите пункт Конфигурации.
  3. В области Конфигурации выберите Вкл. , чтобы включить Прием потоковой передачи.
  4. Нажмите кнопку Сохранить.

Создание целевой таблицы и определение политики

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

  1. В Synapse Studio в области слева выберите элемент Разработка.

  2. В разделе Скрипты KQL выберите + (Добавить новый ресурс) >Скрипт KQL. В области справа можно присвоить имя вашему сценарию.

  3. В меню Подключение к выберите contosodataexplorer.

  4. В меню Использование базы данных выберите TestDatabase.

  5. Вставьте следующую команду и выберите Выполнить, чтобы создать таблицу.

    .create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
    
  6. Скопируйте одну из следующих команд в Панель запросов и выберите Выполнить. Будет определена политика приема потоковой передачи для созданной вами таблицы или базы данных, содержащей эту таблицу.

    Совет

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

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

      .alter table TestTable policy streamingingestion enable
      
    • Чтобы определить политику для базы данных, содержащей созданную таблицу, выполните следующий код:

      .alter database StreamingTestDb policy streamingingestion enable
      

Создание приложения приема потоковой передачи для приема данных в пуле Data Explorer

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

using Kusto.Data;
using Kusto.Ingest;
using System.IO;
using Kusto.Data.Common;

namespace StreamingIngestion
{
    class Program
    {
        static void Main(string[] args)
        {
            string poolPath = "https://<Poolname>.<WorkspaceName>.kusto.windows.net";
            string appId = "<appId>";
            string appKey = "<appKey>";
            string appTenant = "<appTenant>";
            string dbName = "<dbName>";
            string tableName = "<tableName>";

            // Create Kusto connection string with App Authentication
            var csb =
                new KustoConnectionStringBuilder(poolPath)
                    .WithAadApplicationKeyAuthentication(
                        applicationClientId: appId,
                        applicationKey: appKey,
                        authority: appTenant
                    );

            // Create a disposable client that will execute the ingestion
            using (IKustoIngestClient client = KustoIngestFactory.CreateStreamingIngestClient(csb))
            {
                // Initialize client properties
                var ingestionProperties =
                    new KustoIngestionProperties(
                        databaseName: dbName,
                        tableName: tableName
                    );

                // Ingest from a compressed file
                var fileStream = File.Open("MyFile.gz", FileMode.Open);
                // Create source options
                var sourceOptions = new StreamSourceOptions()
                {
                    CompressionType = DataSourceCompressionType.GZip,
                };
                // Ingest from stream
                var status = client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions).GetAwaiter().GetResult();
            }
        }
    }
}

Выключение приема потоковой передачи в пуле Data Explorer

Предупреждение

Отключение приема потоковой передачи может занять несколько часов.

Перед отключением приема потоковой передачи в пуле Data Explorer удалите политику приема потоковой передачи из всех соответствующих таблиц и баз данных. Удаление политики приема потоковой передачи активирует реорганизацию данных в пуле Data Explorer. Данные приема потоковой передачи перемещаются из первоначального хранилища в постоянное хранилище в хранилище столбцов (экстентов или сегментов). Этот процесс может занять от нескольких секунд до нескольких часов в зависимости от объема данных в первоначальном хранилище.

Удаление политики приема потоковой передачи

Политику приема потоковой передачи можно удалить с помощью Azure Synapse Studio или портала Azure.

  1. В Synapse Studio в области слева выберите элемент Разработка.

  2. В разделе Скрипты KQL выберите + (Добавить новый ресурс) >Скрипт KQL. В области справа можно присвоить имя вашему сценарию.

  3. В меню Подключение к выберите contosodataexplorer.

  4. В меню Использование базы данных выберите TestDatabase.

  5. Вставьте следующую команду и выберите Выполнить, чтобы создать таблицу.

    .delete table TestTable policy streamingingestion
    
  6. На портале Azure перейдите к пулу Data Explorer.

  7. Под разделом Параметры выберите пункт Конфигурации.

  8. В области Конфигурации выберите Вкл. , чтобы включить Прием потоковой передачи.

  9. Щелкните Сохранить.

Ограничения

  • Курсоры базы данных не поддерживаются для базы данных, если в самой базе данных или в любой из ее таблиц определена и включена политика приема потоковой передачи.
  • Сопоставления данных должны быть предварительно созданы, чтобы их можно было использовать для приема потоковой передачи. Отдельные запросы на прием потоковой передачи не поддерживают встроенные сопоставления данных.
  • Невозможно установить теги экстентов для данных приема потоковой передачи.
  • Политика обновления. Политика обновления может ссылаться только на недавно принятые данные в исходной таблице, а не на другие данные или таблицы в базе данных.
  • Если прием потоковой передачи используется в какой-либо из таблиц базы данных, эту базу данных нельзя использовать в качестве ведущей для баз данных подписчиков или в качестве поставщика данных для общего ресурса данных Azure Synapse Analytics.

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