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

Что может привести к снижению производительности Polybase при запросе больших наборов данных для вставки записей в хранилище данных Azure из хранилища BLOB-объектов?

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

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

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

1 ответ

Решение

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

Максимальное хранилище BLOB-объектов Azure (в настоящее время) составляет около 1250 МБ / с, поэтому, если ваша пропускная способность не приближается к максимальной, то лучший способ повысить производительность - обновить DWU в хранилище данных SQL. В фоновом режиме это распределяет вашу рабочую нагрузку по большому кластеру (большему количеству серверов). DWU хранилища данных SQL можно масштабировать за несколько минут.

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

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

Вы также можете рассмотреть возможность использования фабрики данных Azure. Смотрите здесь для поддерживаемых форматов файлов. GZip поддерживается. Используйте операцию копирования для копирования из хранилища BLOB-объектов в SQL DW.

Также посмотрите на:

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