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

Parallel Tasks in Data Factory Custom Activity (ADF V2)

我正在使用批处理服务在 ADF v2 中 运行 宁自定义代码 activity。每当这个 运行s 它只会在我的批处理作业中创建一个 CloudTask,尽管我有超过两打 parallel.Invoke 方法 运行ning。有没有一种方法可以从 ADF 的一个自定义 Activity 创建多个任务,以便处理可以分布在 Batch Pool

中的所有节点

我已经修复了两个节点的池。最大任务也设置为每个节点 8 个,调度策略也设置为 "Spread"。我的管道上只有一个自定义任务,其中包含多个 Parallel.Invoke(将近两打)。我希望这将创建多个 CloudTask,并将分布在我的两个节点上,因为两个节点都是单核的。看起来当 ADF 中的每个 Custom Activity 运行s 时,它只为批处理服务创建一个任务 (CloudTask)。

我的另一个希望是使用

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

并在我的控制台应用程序中手动创建 CloudTasks 并以编程方式创建多个任务,然后 运行 使用 ADF 自定义 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

的自定义 Activity 中使用 .NET API for Batch 创建 CloudTasks

我想实现什么?

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

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

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