【发布时间】:2019-01-17 05:19:54
【问题描述】:
我正在使用批处理服务在 ADF v2 中运行自定义代码活动。每当它运行时,它只会在我的批处理作业中创建一个 CloudTask,尽管我有两打以上的 parallel.Invoke 方法正在运行。有没有一种方法可以从 ADF 的一个自定义活动创建多个任务,以便处理可以分布在批处理池中的所有节点
我有两个节点的固定池。 Max Tasks 也设置为每个节点 8 个,调度策略也设置为“Spread”。我的管道上只有一个自定义任务,带有多个 Parallel.Invoke(几乎两个 Dozen)。我希望这将创建多个 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);
此外,我们似乎无法在 ADF 的自定义活动中使用 .NET API for Batch 创建 CloudTasks
我想实现什么?
我在 SQL Server 表中有数据,我想通过水平或垂直切片(通过选择行或列)对其运行不同的转换。我想并行运行这些转换(希望有多个 CloudTask 实例,以便每个实例都可以独立地对特定列进行操作,并在转换后加载它 到另一个表中)。但问题是我们似乎无法在 ADF 中使用 .NET Batch Service API,唯一的方法似乎是在我的数据工厂管道中拥有多个自定义活动。
【问题讨论】:
-
这是并行执行相同的单个任务还是并行执行同一任务的多个版本?
-
我的代码中有多个 Parallel.Invoke 的单个自定义任务,并希望这将在批处理池中的两个节点之间传播执行。我们可以在 ADF 中使用 .NET API for Batch 在一个自定义 Activity 中创建多个 CloudTasks 吗?
-
您好,您找到解决方案了吗?处理有点相同的情况。任何线索将不胜感激。
标签: azure-data-factory-2 azure-batch