sp_execute_external_script
将可选的@parallel
参数默认为0. sp_execute_external_script
的{{3}}表示某事可以并行执行,但是对于什么来说很模糊:
通过将
@parallel
参数设置为1来启用R脚本的并行执行。此参数的默认值为0(无并行性)。对于不使用RevoScaleR函数的R脚本,使用
@parallel
参数可以有利于处理大型数据集,假设脚本可以简单地并行化。例如,将Rpredict
函数与模型一起使用以生成新预测时,请将@parallel =
1设置为查询引擎的提示。如果可以并行化查询,则将根据 MAXDOP 设置分配行。...
对于使用RevoScaleR函数的R脚本,并行处理是自动处理的,您不应该为 sp_execute_external_script 调用指定
@parallel = 1
。
因此,它不是 RevoScaleR,因为RevoScaleR处理没有@parallel
的并行处理,并且在使用RevoScaleR函数时不应传递@parallel = 1
。那里有关于分配行的东西,但没有细节。
我尝试了docs以获取更多信息,但除了我刚才引用的文档之外,没有任何结果说有用。
@parallel = 1
实际上做了什么?它是在多个R进程中多次运行脚本并发送每个输入的片段吗? (它是否假设脚本在逐行的基础上运行,这种分裂不会导致错误的结果?)它是否做了我没想到的其他事情?