1

好的,这就是正在做的事情。我有一个执行以下操作的 U-SQL 脚本。

步骤 1. 在 txn 表“A”中插入一条记录,例如“PROCESSING STARTED”,记录步骤 2 的开始。步骤 2.从文件中提取步骤 3.使用步骤 2 中的行集插入表“B”。步骤4. INSERT a record into a txn table 'A' say "PROCESSING FINISHED",记录步骤2的成功执行。

当我编写上述代码时,我希望上述步骤将按上述顺序执行。令我惊讶的是,事实并非如此,当我仔细研究代数时,我了解到查询优化器打乱了我所有的任务,并按如下方式运行它。

  1. 所有提取物
  2. 所有拆分、聚合、分区
  3. 所有写入(如果您注意到有 2 个表正在插入)

所以我在这里的问题是如何确保 Step 2, Step 3 仅在 Step 1 之后执行?到目前为止,我并不在意第 4 步。我也可以按以下方式运行,但我希望还有其他选择。作业 1(步骤 1) 作业 2(步骤 2、3) 作业 3(步骤 4)

请问你能帮忙吗?

4

1 回答 1

2

U-SQL 旨在优化您的查询,使其可以跨多个节点横向扩展,从而高效执行您的查询。您所观察到的是设计,在您的代码中,由于步骤 1 和 2 之间没有依赖关系,因此有机会并行化它们的执行。

我可以想到让您按特定顺序执行它们的一个选项是在步骤 2 中引入对来自步骤 1 的结果的依赖。

话虽如此,如果您正在研究顺序执行模式,我很好奇您为什么选择 U-SQL(它是为大规模并行化应用程序设计的)。

于 2016-05-08T20:50:37.987 回答