1

我在似乎没有并行运行的行集上运行自定义处理器。底层的 ~1GB 文本文件首先被读入一个通过循环进行分区的表中。“提取”在 200 个顶点上运行,但随后(在“聚合”节点下)处理 [进行各种复杂计算] 仅发生在 2 个顶点上,即使并行度参数远高于此。是否需要使用特殊提示来指示编译器使用更多顶点?是否有需要重写的函数或属性以在此阶段设置并行度?

4

1 回答 1

1

这么晚才回复很抱歉。但这是假期时间:)。

很高兴看到提取阶段已完全扩展。

如果没有看到脚本或生成的计划,很难说出为什么在某些地方只看到 2 个顶点。出现这种情况的原因有几个:

  1. 你没有足够的数据来扩大规模。
  2. 您的聚合需要更多数据,因此该计划的并行度较低。
  3. 您的操作本质上不太并行。
  4. 优化器的数据基数估计关闭并且选择的并行度不够。我们有一些暗示的能力,但我宁愿先看到这份工作。

请注意,自定义处理器通常会阻止优化器在脚本中推送优化(例如使用 READ ONLY 选项帮助),并且可能会丢弃基数估计。

如果您将脚本、作业图和指向 Microsoft 的 mrys 的作业链接发送给我,我和团队将在假期结束后的下周对其进行调查。

于 2015-12-30T01:31:24.007 回答