Каковы руководящие принципы или где мы можем найти рекомендации по разработке системы для оптимального параллелизма. Я понимаю, что данные разделяются по отдельным узлам и оптимизированы для этого.Оптимизация для максимальной степени параллелизма в Azure Data Lake
Данные, которые у меня есть в файлах, в настоящее время содержат в нем несколько клиентов, сайтов, продуктов и пользователей. Мне нужно агрегировать по клиенту, сайту, продукту, что означает, что подмножества этих данных могут быть легко рассчитаны в отдельных узлах и возвращены в один узел для вывода в конце обработки.
Однако я не вижу такого уровня параллелизма в графике работы. Он показывает MDOP, но не таким образом, который кажется оптимальным. У меня есть 4 разных расчета, которые выполняются независимо от клиента, сайта, продукта. Он сравнивается с 4 расчетами, но делает это на всем наборе данных. Когда на самом деле это должно быть в состоянии развернуть его, где говорят, что 10 узлов получают по 1 клиента каждый, тогда каждый из этих узлов может развернуть свои вычисления до еще четырех узлов. (номера примечаний здесь просто, например, масштаб данных намного больше).
Как оптимизировать макет файлов или логику U-SQL для поощрения большего количества MDOP?
Да, это неструктурированные файлы. В настоящее время мы имеем 89 файлов в месяц, с 15 месяцами файлов = 1350 файлов, которые составляют от 48 до 227 МБ каждый. Мы могли бы объединить эти CVS в отдельные файлы в месяц, если бы это повысило эффективность. –
Итак, где-то около 1,5 млрд записей записей. Вы говорите о разделении файлов, подразумеваете ли вы, что группы компаний попадают в отдельные файлы? Можете ли вы указать любую информацию о наборах файлов и подсказки ROWCOUNT? Хотя кажется, что загрузка этого в секционированную таблицу может быть лучшим решением. –
Наборы файлов находятся в документации по U-SQL по адресу http://aka.ms/usql_reference. Хотя вы уже разбиваете данные на файлы, кажется. вы можете добавить подсказку в конце выражения запроса, например, SELECT * FROM @rs WHERE предикат OPTION (ROWCOUNT = 50000); Но использование секционированной таблицы может быть лучшим подходом. –