我目前使用的是SQL Server 2016 SP
标准版,想安装 R 服务。在文档Machine Learning Server (Standalone)
中说,仅允许在 Enterprise ( )上进行独立安装。
另外,我发现了一个帖子,里面有人说在标准上我无法使用并行操作并且存在内存限制:
谁能说出确切的内存/处理器限制是什么?
我需要使用繁重的 R 计算等详细信息,目前的测试表明标准版中的实现没有像我希望的那样工作。
我目前使用的是SQL Server 2016 SP
标准版,想安装 R 服务。在文档Machine Learning Server (Standalone)
中说,仅允许在 Enterprise ( )上进行独立安装。
另外,我发现了一个帖子,里面有人说在标准上我无法使用并行操作并且存在内存限制:
谁能说出确切的内存/处理器限制是什么?
我需要使用繁重的 R 计算等详细信息,目前的测试表明标准版中的实现没有像我希望的那样工作。
查看联机丛书的“跨版本的 SQL Server 机器学习服务的功能可用性”页面:
联机丛书在该页面上详细介绍了有关部署限制的信息,例如:
正如布伦特在那里引用的那样,关键区别之一是规模。
如果您的计算并行得令人尴尬,即每一行都可以彼此独立计算,那么使用
sp_execute_external_script
with@parallel = 1
将允许您轻松地并行运行 R 计算。请注意,仍然有可能咬得太多,无法咀嚼并耗尽内存,在这种情况下,您可以添加@params = N'@r_rowsPerRead INT', @r_rowsPerRead = N
,其中 N 是您希望一次读取的最大行数。使用上面的方法,我已经能够在不到 10 分钟的时间内对 20 亿行数据运行 R 计算(显然你的里程可能会有所不同)。
如果您需要对批处理进行更多控制,例如确保将适当的行组合在一起,那么我认为您可以通过直接从 R 脚本中调用 RevoScaleR 函数来实现这一点,但我没有考虑过这个。
如果您绝对必须使用标准版,那么您可以通过自己对数据进行批处理来发挥创意,但是当我尝试这样做时,我发现代码会变得非常复杂,而且速度也不如利用企业版流式处理。
此处提供更多信息:https ://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql?view=sql-server-2017
注意 SSDT 不支持
GRANT EXECUTE ANY EXTERNAL SCRIPT
,所以如果您使用它进行部署,那么事情就会变得很痛苦。我已将此作为用户声音问题提出https://feedback.azure.com/forums/908035-sql-server/suggestions/32896864-grant-execute-any-external-script-not-recognised-b。