Руководство по настройке производительности потоков данных для сопоставления

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Потоки данных для сопоставления в Фабрике данных Azure и конвейерах Synapse предоставляют интерфейс для проектирования и выполнения преобразований данных в необходимом масштабе без написания кода. Если вы не знакомы с потоками данных для сопоставления, см. статью Общие сведения о потоках данных для сопоставления. В этой статье описываются различные способы настройки и оптимизации потоков данных, чтобы они соответствовали вашим эталонам производительности.

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

Отслеживание производительности потоков данных

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

Data Flow Monitor

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

  • время запуска кластера;
  • чтение из источника;
  • время преобразования;
  • запись в приемник.

Data Flow Monitoring

Время запуска кластера — это время, затрачиваемое на запуск кластера Apache Spark. Это значение указано в правом верхнем углу экрана мониторинга. Потоки данных выполняются согласно JIT-модели, в которой каждое задание использует изолированный кластер. Это время запуска обычно занимает 3–5 минут. Для последовательных заданий время запуска может быть сокращено путем включения времени в реальном времени. Дополнительные сведения см. в разделе "Время жизни " в разделе "Производительность среды выполнения интеграции".

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

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

Тестирование логики потока данных

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

Вкладка оптимизации

Вкладка Оптимизация содержит параметры для настройки схемы секционирования кластера Spark. Эта вкладка доступна в каждом преобразовании потока данных. На ней указывается, нужно ли повторно секционировать данные после завершения преобразования. Настройка секционирования обеспечивает контроль над распределением данных между вычислительными узлами и оптимизацией размещения данных. Все это может иметь как положительное, так и отрицательное влияние на общую производительность потока данных.

Screenshot shows the Optimize tab, which includes Partition option, Partition type, and Number of partitions.

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

Чтобы изменить секционирование для любого преобразования, перейдите на вкладку Оптимизация и установите переключатель Задать секционирование. Вы предоставляете ряд вариантов секционирования. Оптимальный метод секционирования зависит от объемов данных, потенциальных ключей, значений NULL и кратности.

Важно!

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

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

Циклический перебор

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

Hash

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

Динамический диапазон

Динамический диапазон подразумевает использование динамических диапазонов Spark по указанным вами столбцам или выражениям. Вы можете задать количество физических секций.

Фиксированный диапазон

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

Ключ.

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

Совет

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

Уровень ведения журнала

Если вам не требуется каждое выполнение конвейера действий потока данных для полного журнала всех подробных журналов телеметрии, можно при необходимости задать уровень ведения журнала на "Базовый" или "Нет". При выполнении потоков данных в режиме "Подробный" (по умолчанию) служба запрашивает полное действие журнала на каждом отдельном уровне секции во время преобразования данных. Это может быть ресурсоемкой операцией, поэтому включать режим подробного ведения журнала следует только при устранении неполадок. Такой подход может повысить общую производительность потоков данных и конвейеров. Режим "Базовый" регистрирует только длительность преобразования, в то время как "Нет" предоставляет только сводку по длительности.

Logging level

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