2

Что может привести к ухудшению производительности Polybase при запросе больших наборов данных для вставки записей в хранилище данных Azure из хранилища Blob?Почему Polybase медленнее для больших сжатых файлов, которые занимают 1 миллиард записей?

Например, несколько тысяч сжатых (.gz) CSV-файлов с заголовками, разделенными на несколько часов в день в течение 6 месяцев. Запрос этих файлов из внешней таблицы в SSMS не совсем оптимистичен, и он очень медленный.

Объективно, я загружаю данные в Polybase для переноса данных в хранилище данных Azure. За исключением, похоже, больших наборов данных, Polybase довольно медленная.

Какие опции доступны для оптимизации Polybase здесь? Подождите запрос или загрузите данные после каждой загрузки в блочное хранилище постепенно?

+0

Когда вы имеете в виду деградацию - вы имеете в виду, что со временем вы становитесь медленнее или просто медленны вообще? –

+1

Медленно в целом. – Fastidious

+0

Какой класс ресурсов вы используете? Рассмотрите возможность использования [largeerc] (https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-best-practices#use-larger-resource-class-to-improve- производительность запросов) для повышения производительности за счет сокращения параллелизма. Если вы подключены как пользователь admin по умолчанию, то их класс ресурсов по умолчанию будет небольшим и не может быть изменен. DWU400 довольно низок для чего-либо, почему бы не 1000, 2000 или 6000 временно, а затем снизить его, когда ваш CTAS сделан? Это одна из действительно полезных функций Azure SQL Data Warehouse, а также пауза. – wBob

ответ

1

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

Azure Blob Storage будет (в настоящее время) до максимума около 1,250MB/сек, так что если пропускная способность не вблизи максить это, то самый лучший способ улучшить производительность, чтобы обновить DWU на вашем складе SQL данных. В фоновом режиме это будет распространять вашу рабочую нагрузку на больший кластер (больше серверов). SQL Data Warehouse DWU можно масштабировать либо вверх, и вниз в считанные минуты.

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

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

Вы также можете рассмотреть возможность использования Azure Data Factory для выполнения работы. See here для поддерживаемых форматов файлов. Поддерживается GZip. Используйте операцию копирования для копирования из хранилища Blob в SQL DW.

Также смотрите, чтобы:

  1. CTAS (Создать таблицу в качестве Select), самый быстрый способ перемещения данных из внешних таблиц для внутреннего хранения в Azure хранилища данных.
  2. Creating statistics для ваших внешних таблиц, если вы собираетесь запрашивать их повторно. SQL Data Warehouse не создает статистику автоматически, как SQL Server, и вам нужно сделать это самостоятельно.
+0

Возможно, я не совсем понимаю. Чтобы загрузить данные в Azure, мне нужно добавить файлы в хранилище Blob. Я делаю это с помощью Azcopy. После хранения я настраиваю ключи API в Azure и создаю внешнюю таблицу в файлах. Тогда единственный способ загрузить данные - правильно запросить внешнюю таблицу во внутренней таблице? Есть ли другой путь? Я предполагаю, что мой единственный вариант - масштабирование DWU, которое я не знал, повлияло на Polybase. И мне сказали, что Gzip быстрее запрашивает, но похоже, что это может быть неверно для больших наборов данных. – Fastidious

+0

Мой DWU во время этого запроса 400 DWU для справки. – Fastidious

+0

Gzip добавляет слой служебных данных, его нужно распаковать перед его обработкой. Стоимость хранения дешева и вычисляется дорого, поэтому я загружу в Azure в CSV (запятая или промаркированная). Это «легче» для Polybase, и вы увидите улучшенную производительность. Помните, что внешние таблицы - это просто файлы, которые читаются механизмом хранилища данных, не ожидайте их выполнения, а также собственные таблицы. Вы можете написать свой собственный код, чтобы вставлять его непосредственно из Azure DW или использовать SSIS, многие из старых инструментов работают нормально и отлично смотрят DW, используя стандартную строку подключения. –

 Смежные вопросы

  • Нет связанных вопросов^_^