@ parallel = 1实际上如何影响脚本执行?

时间:2017-06-27 21:00:40

标签: sql-server r parallel-processing

sp_execute_external_script将可选的@parallel参数默认为0. sp_execute_external_script的{​​{3}}表示某事可以并行执行,但是对于什么来说很模糊:

  

通过将@parallel参数设置为1来启用R脚本的并行执行。此参数的默认值为0(无并行性)。

     

对于不使用RevoScaleR函数的R脚本,使用@parallel参数可以有利于处理大型数据集,假设脚本可以简单地并行化。例如,将R predict函数与模型一起使用以生成新预测时,请将@parallel = 1设置为查询引擎的提示。如果可以并行化查询,则将根据 MAXDOP 设置分配行。

     

...

     

对于使用RevoScaleR函数的R脚本,并行处理是自动处理的,您不应该为 sp_execute_external_script 调用指定@parallel = 1

因此,它不是 RevoScaleR,因为RevoScaleR处理没有@parallel的并行处理,并且在使用RevoScaleR函数时不应传递@parallel = 1。那里有关于分配行的东西,但没有细节。

我尝试了docs以获取更多信息,但除了我刚才引用的文档之外,没有任何结果说有用。

@parallel = 1实际上做了什么?它是在多个R进程中多次运行脚本并发送每个输入的片段吗? (它是否假设脚本在逐行的基础上运行,这种分裂不会导致错误的结果?)它是否做了我没想到的其他事情?

0 个答案:

没有答案