U-SQL查询优化器行为

时间:2016-05-08 18:30:52

标签: azure-data-lake u-sql

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

步骤1.将记录插入到txn表中' A'说"处理开始",记录步骤2的开始。 步骤2.从文件中提取 第3步。插入表格' B'使用步骤2中的行集。 步骤4.将记录插入到txn表中' A'说"处理结束",记录步骤2的成功执行。

当我编写上述代码时,我希望上述步骤将按照上述顺序执行。令我惊讶的是,当我仔细查看代数时,我开始明白查询优化器会拖拽我的所有任务,并按以下方式运行它。

  1. 所有提取
  2. 所有拆分,聚合,分区
  3. 所有写入(如果您注意到插入了2个表)
  4. 所以我在这里的问题是如何确保步骤2,步骤3仅在步骤1之后执行?到目前为止,我对第4步并不感到困扰。我也可以在下面运行,但我希望还有其他一些选择。 工作1(步骤1) 工作2(步骤2,3) 工作3(步骤4)

    请你帮忙吗?

1 个答案:

答案 0 :(得分:2)

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

我能想到的一个选项是以某个顺序执行它们是为了引入对步骤2中步骤1的结果的依赖。

话虽如此,如果您正在查看顺序执行模式,我很好奇为什么选择U-SQL(专为大型并行应用程序设计)。