数据工厂自定义活动(ADF V2)中的并行任务



我正在使用批处理服务在ADF v2中运行自定义代码活动。无论何时运行,它都只在我的Batch Job中创建一个CloudTask,尽管我有二十多个并行任务。调用正在运行的方法。有没有一种方法可以从ADF的一个自定义活动创建多个任务,以便处理可以分布在批处理池中的所有节点上

我有两个节点的固定池。每个节点的最大任务数也设置为8,调度策略也设置为"排列"。我的管道上只有一个自定义任务,带有Multiple Parallel.Invoke(几乎是两个Dozen)。我希望这将创建多个CloudTasks,并将分布在我的两个节点上,因为两个节点都是单核的。看起来,当每个自定义活动在ADF中运行时,它只为Batch Service创建一个任务(CloudTask)。

我的另一个希望是使用

https://learn.microsoft.com/en-us/azure/batch/tutorial-parallel-dotnet

在我的控制台应用程序中手动创建CloudTasks,并以程序方式创建Multiple Tasks,然后使用ADF Custom Activity运行控制台应用程序,但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);

此外,我们似乎无法在ADF 的自定义活动中使用.NET API for Batch来创建CloudTasks

我想要实现什么?

我在SQL Server表中有数据,我想通过水平或垂直切片(通过拾取行或列)对其运行不同的转换。我想并行运行这些转换(希望有多个CloudTask实例,这样每个实例都可以独立地对特定的Column进行操作,并在转换后加载它放入不同的表中)。但问题是,我们似乎无法在ADF中使用.NET Batch Service API,唯一的方法似乎是在我的数据工厂管道中拥有多个自定义活动。

应用程序需要部署在批处理池中的每个节点上,并且需要通过使用cmd 调用应用程序来创建CloudTasks

CloudTask task =
new CloudTask(
"MyTask",
"cmd /c %AZ_BATCH_APP_PACKAGE_MyTask%\myTask.exe -args -here");

最新更新