Я запускаю пользовательский код в ADF v2 с помощью пакетной службы. Всякий раз, когда это запускается, он создает только одну CloudTask в моем пакетном задании, хотя у меня работает более двух десятков методов parallel.Invoke. Есть ли способ создать несколько задач из одного настраиваемого действия из ADF, чтобы обработка могла распространяться на все узлы в пуле пакетов?
У меня фиксированный пул с двумя узлами. Максимальное количество задач также установлено на 8 на узел, а политика планирования также установлена на «Распространение». У меня есть только одна настраиваемая задача в моем конвейере с Multiple Parallel.Invoke (почти две дюжины). Я надеялся, что это создаст несколько CloudTasks и будет распространяться на оба моих узла, поскольку оба узла одноядерные. Похоже, когда каждое настраиваемое действие выполняется в ADF, оно создает только одну задачу (CloudTask) для пакетной службы.
Другой моей надеждой было использовать
https://docs.microsoft.com/en-us/azure/batch/tutorial-parallel-dotnet
и вручную создать CloudTasks в моем консольном приложении и создать несколько задач программно, а затем запустить это консольное приложение с помощью настраиваемого действия ADF, но CloudTask принимает JobId и Cmd. Хотел что-то вроде следующего, но вместо передачи taskCommandLine я хотел передать имя метода C # и параметры для выполнения
string taskId = "task" + i.ToString().PadLeft(3, '0');
string taskCommandLine = "ping -n " + rand.Next(minPings, maxPings +
1).ToString() + " localhost";
CloudTask task = new CloudTask(taskId, taskCommandLine);
// Wanted to do CloudTask task = new CloudTask(taskId,
SomeMethod(args));
tasks.Add(task);
Также похоже, что мы не можем создавать CloudTasks с помощью .NET API для пакетной обработки в пользовательской активности ADF.
Чего я хотел достичь?
У меня есть данные в таблице SQL Server, и я хочу выполнить различные преобразования, разрезая их по горизонтали или вертикали (путем выбора строк или столбцов). Я хочу запустить эти преобразования в параллельном режиме (хочу иметь несколько экземпляров CloudTask, чтобы каждый из них мог независимо работать с определенным столбцом и после преобразования загружал его в другую таблицу). Но проблема в том, что похоже, что мы не можем использовать .NET Batch Service API в ADF, и единственный способ - иметь несколько настраиваемых действий в моем конвейере фабрики данных.