-
RevoScaleR
,用于大规模分析
-
MicrosoftML
,用于机器学习算法。
仅适用于 SQL Server 2016、SQL Server 2017 和 SQL Server 2019。
-
用于访问 SQL Server 中的数据或 R 代码的其他库
SQL Server 包含开源包和专有包。 基本 R 库通过 Microsoft 的开源 R 发行版安装:Microsoft R Open (MRO)。 R 的当前用户应该能够移植其 R 代码并在 SQL Server 上将其作为外部进程执行,且修改很少或无需修改。 MRO 独立于 SQL 工具安装,并在扩展性框架中的核心引擎进程外部执行。 在安装期间,必须同意开源许可证的条款。 此后,无需进一步的修改即可运行标准 R 包,就像运行 R 的其他任何开源发行版一样。
对于 SQL Server 2016 (13.x)、SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x),SQL Server 不会修改基本 R 可执行文件,但必须使用安装程序安装的 R 版本,因为该版本是用于生成和测试专有包的版本。 若要详细了解 MRO 与可能从 CRAN 获得的 R 基本发行版有何差异,请参阅
与 R 语言以及 Microsoft R 产品和功能的互操作性
。
安装程序安装的 R 基本包发行版可以在与实例关联的文件夹中找到。 例如,如果在 SQL Server 默认实例上安装了 R Services,则 R 库默认位于以下文件夹中:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
。 同样,与默认实例关联的 R 工具默认位于以下文件夹中:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin
。
Microsoft 为并行和分布式工作负荷添加的 R 包包含以下库。
RevoScaleR
支持数据源对象以及数据浏览、操作、转换和可视化。 它支持创建远程计算上下文以及各种可缩放的机器学习模型,例如
rxLinMod
。 这些 API 已经过优化,可以分析由于过大而无法装入内存的数据集,以及执行分布在多个核心或处理器之间的计算。 RevoScaleR 包还支持使用 XDF 文件格式来加速移动和存储用于分析的数据。 XDF 格式使用纵栏表存储且可移植,可用于加载并处理来自各种来源(包括文本、SPSS 或 ODBC 连接)的数据。
MicrosoftML
包含针对速度和准确性进行了优化的机器学习算法,以及用于处理文本和图像的内联转换。 有关详细信息,请参阅
SQL Server 中的 MicrosoftML
。
仅适用于 SQL Server 2016、SQL Server 2017 和 SQL Server 2019。
从 SQL Server 2022 (16.x) 起,R、Python 和 Java 的运行时不再随 SQL 安装程序一起安装。 请改为安装所需的 R 和/或 Python 自定义运行时和包。 有关详细信息,请参阅
在 Windows 上安装 SQL Server 2022 机器学习服务
或
在 Linux 上安装 SQL Server 机器学习服务(Python 和 R)
。
在 SQL Server 中使用 R
可使用基本函数编写 R 脚本,但要从多处理中受益,则必须将
RevoScaleR
和
MicrosoftML
模块导入 R 代码,然后调用其函数来创建并行执行的模型。
支持的数据源包括 ODBC 数据库、SQL Server 和用于与其他源或通过 R 解决方案交换数据的 XDF 文件格式。 输入数据必须为表格格式。 所有 R 结果都必须以数据帧的形式返回。
支持的计算上下文包括本地或远程 SQL Server 计算上下文。 远程计算上下文指在一台计算机(例如工作站)上开始,但随后将脚本执行切换到远程计算机的代码执行。 切换计算上下文要求两个系统具有同一 RevoScaleR 库。
正如用户所预期的一样,本地计算上下文包括在与数据库引擎实例相同的服务器上执行 R 代码,以及 T-SQL 内部或嵌入存储过程的代码。 还可以通过定义远程计算上下文,从本地 R IDE 运行代码并使脚本在 SQL Server 计算机上执行。
执行体系结构
以下关系图说明 SQL Server 组件与 R 运行时在每种支持的方案中的交互:在数据库内运行脚本,以及使用 SQL Server 计算上下文从 R 命令行远程执行。
从 SQL Server(数据库内)执行 R 脚本
从 SQL Server“内部”运行的 R 代码通过调用某个存储过程来执行。 因此,可以发出存储过程调用的任何应用程序都可以启动 R 代码的执行。 然后,SQL Server 按下图中概括的方式管理 R 代码的执行。
-
对 R 运行时发出的请求由传递给存储过程
sp_execute_external_script
的参数 @language='R' 指示。 SQL Server 将此请求发送到 Launchpad 服务。
在 Linux 中,SQL 使用 Launchpad 服务与每个用户的独立 Launchpad 进程进行通信。 有关详细信息,请参阅
扩展性体系结构关系图
。
-
Launchpad 服务启动相应的启动器(在本例中为 RLauncher)。
-
RLauncher 启动外部 R 进程。
-
BxlServer 与 R 运行时协同工作,管理与 SQL Server 之间的数据交换并存储工作结果。
-
SQL Satellite 管理相关任务和进程与 SQL Server 之间的通信。
-
BxlServer 使用 SQL Satellite 向 SQL Server 传递状态和结果。
-
SQL Server 获取结果并关闭相关任务和进程。
从远程客户端执行 R 脚本
从支持 Microsoft R 的远程数据科学客户端进行连接时,可以使用 RevoScaleR 函数在 SQL Server 的上下文中运行 R 函数。 此工作流与前面的工作流不同,下图对此做了汇总。
-
对于 RevoScaleR 函数,R 运行时调用链接函数,后者接着调用 BxlServer。
-
BxlServer 已随附在 Microsoft R 中,在独立于 R 运行时的进程中运行。
-
BxlServer 确定连接目标并使用 ODBC 发起连接,传递 R 数据源对象的连接字符串中提供的凭据。
-
BxlServer 打开与 SQL Server 实例的连接。
-
对于 R 调用,将调用 Launchpad 服务,该服务接着启动相应的启动器 RLauncher。 然后,R 代码的处理过程类似于从 T-SQL 运行 R 代码。
-
RLauncher 针对 SQL Server 计算机上安装的 R 运行时实例发出调用。
-
将结果返回到 BxlServer。
-
SQL Satellite 管理与 SQL Server 之间的通信并清理相关作业对象。
-
SQL Server 将结果传回客户端。
-
SQL Server 中的扩展性框架
-
SQL Server 中的 Python 和机器学习扩展