在 Linux 上安装 SQL Server 2022 机器学习服务(Python 和 R)

适用于: SQL Server 2022 (16.x) - Linux

本文指导你在 Linux 上安装 SQL Server 机器学习服务。 可使用机器学习服务在数据库中执行 Python 和 R 脚本。

可在 Ubuntu 和 Red Hat Enterprise Linux (RHEL) 上安装机器学习服务。 目前不支持 SUSE Linux Enterprise Server (SLES)。

可以在运行 Linux 发行版的 Docker 容器上安装 ML 服务。 在 Docker 容器中,步骤如下所示。

有关详细信息,请参阅 Linux 上的 SQL Server 安装指南中的“受支持的平台”部分

重要

本文涉及的是 SQL Server 2022 (16.x)。 对于 Linux 上的 SQL Server 2019,请参阅在 Linux 上安装 SQL Server 2019 机器学习服务(Python 和 R)。 关于 Windows 上的 SQL Server,请参阅在 Windows 上安装 SQL Server 2022 机器学习服务(Python 和 R)

安装前清单

  • 安装 Linux 上的 SQL Server,然后验证安装。

  • 查看 SQL Server Linux 存储库中的 Python 和 R 扩展。 如果已为数据库引擎安装配置了源存储库,则可以使用相同的存储库注册运行 mssql-server-extensibility 包安装命令。

  • 应安装用于运行 T-SQL 命令的工具。

    • 你可使用免费的 Azure Data Studio 数据库工具,该工具在 Linux、Windows 和 macOS 上运行。
  • 在此安装过程中,将需要重启 SQL Server 实例。

包列表

在已连接 Internet 的设备上,将使用针对每个操作系统的包安装程序独立于数据库引擎下载和安装相应的包。

Linux 上 SQL Server 2022 (16.x) 的可用安装包:

包名称 适用对象 说明
mssql-server-extensibility All 用于运行 Python 和 R 的扩展性框架。

安装 mssql-server-extensibility 包

  1. 配置与 Linux 发行版对应的的 Linux 存储库。 使用包 mssql-server-extensibility 和关联的依赖项 libssl-dev 安装 SQL Server 扩展性功能。

    Ubuntu

    sudo apt-get install mssql-server-extensibility libssl-dev
    

    RHEL

    yum install mssql-server-extensibility
    
  2. 查看并接受 SQL Server ML 服务的最终用户许可协议 (EULA)。

    sudo /opt/mssql/bin/mssql-conf set EULA accepteulaml Y
    

    若要完成对 EULA 的接受,必须重启 SQL Server 实例。

    sudo systemctl restart mssql-server
    

安装运行时和包

设置 R 支持

安装 R 运行时

  1. 下载并安装所需的 R 版本。 选择 R 4.2 或更高版本,可直接从 cran.r-project.org 下载。按照所需运行时的说明进行操作。

  2. 打开管理员 R 终端:

    sudo R
    
  3. 运行以下命令安装 CompatibilityAPIRevoScaleR 的依赖项:

    # R Terminal
    install.packages("iterators", lib="/usr/lib/R/library")
    install.packages("foreach", lib="/usr/lib/R/library")
    install.packages("R6", lib="/usr/lib/R/library")
    install.packages("jsonlite", lib="/usr/lib/R/library")
    
  4. 下载并安装适用于 Linux 的 CompatibilityAPIRevoScaleR

    install.packages("https://aka.ms/sqlml/r4.2/linux/CompatibilityAPI_1.1.0_R_x86_64-pc-linux-gnu.tar.gz", repos=NULL, lib="/usr/lib/R/library")
    install.packages("https://aka.ms/sqlml/r4.2/linux/RevoScaleR_10.0.1_R_x86_64-pc-linux-gnu.tar.gz", repos=NULL, lib="/usr/lib/R/library")
    
  5. 从 R 终端验证 RevoScaleR 安装。

    library("RevoScaleR")
    

使用 SQL Server 配置 R 运行时

  1. 使用 SQL Server for Linux 配置已安装的 R 运行时,其中 path/to/ 是 R 二进制文件的文件路径,RFolderVersion 是 R 运行时安装的特定于版本的文件夹名称,例如 R4.2

    sudo /opt/mssql/bin/mssql-conf set extensibility rbinpath /usr/lib/R/bin/R
    sudo /opt/mssql/bin/mssql-conf set extensibility datadirectories /usr/lib/R
    
  2. 重新启动 Launchpadd 服务。

    systemctl restart mssql-launchpadd.service
    
  3. 将 SQL Server for Linux 配置为允许使用 sp_configure 系统存储过程的外部脚本。

    EXEC sp_configure 'external scripts enabled', 1;
    GO
    RECONFIGURE
    GO
    
  4. 通过执行简单的 T-SQL 命令来验证安装以返回 R 的版本:

    EXEC sp_execute_external_script @script=N'print(R.version)',@language=N'R';
    GO
    

设置 Python 支持

安装 Python 运行时

  1. 下载并安装 Python。 具体选择 Python 3.10 版本,可直接从 python.org 下载。按照提供的说明进行操作。 此外,为运行时版本安装共享 Python 运行时库。 例如,要为 Ubuntu 安装 libpython3.10sudo apt-get install libpython3.10

  2. 为根用户下载并安装 revoscalepy

    sudo pip install dill numpy==1.22.0 pandas patsy python-dateutil
    sudo pip install https://aka.ms/sqlml/python3.10/linux/revoscalepy-10.0.1-py3-none-any.whl --target=/usr/lib/python3.10/dist-packages
    
  3. 从 Python 终端验证 revoscalepy 安装。 验证是否可以导入库。

    import revoscalepy
    

使用 SQL Server 配置 Python 运行时

  1. 使用 SQL Server 配置已安装的 Python 运行时,其中 pythonbinbath 设置为已安装的 python 二进制文件的路径,datadirectories 包括为所需版本的 python 安装包的路径,例如 /usr/lib/python3.10/dist-packages。 将以下脚本与实际安装路径配合使用:

    sudo /opt/mssql/bin/mssql-conf set extensibility pythonbinpath /usr/bin/python3.10
    sudo /opt/mssql/bin/mssql-conf set extensibility datadirectories /usr/lib:/usr/lib/python3.10/dist-packages
    
  2. 重新启动 Launchpadd 服务。

    systemctl restart mssql-launchpadd.service
    
  3. 将 SQL Server for Linux 配置为允许使用 sp_configure 系统存储过程的外部脚本。

    EXEC sp_configure 'external scripts enabled', 1;
    GO
    RECONFIGURE
    GO
    
  4. 通过执行简单的 T-SQL 命令来验证安装以返回 python 的版本:

    EXEC sp_execute_external_script @script=N'import sys;print(sys.version)',@language=N'Python';
    GO
    

安装 Java

若要安装 Java 语言扩展,请参阅在 Linux 上安装 SQL Server Java 语言扩展

验证安装

若要验证安装,请使用以下任一方法:

  • 运行 T-SQL 脚本,该脚本执行使用查询工具调用 Python 或 R 的系统存储过程。

  • 请执行以下 SQL 命令以测试 SQL Server 中的 R 执行。 遇到错误? 尝试重启服务 sudo systemctl restart mssql-server.service

    EXEC sp_execute_external_script   
    @language =N'R', 
    @script=N' 
    OutputDataSet <- InputDataSet', 
    @input_data_1 =N'SELECT 1 AS hello' 
    WITH RESULT SETS (([hello] int not null)); 
    GO 
    
  • 请执行以下 SQL 命令以测试 SQL Server 中的 Python 执行。

    EXEC sp_execute_external_script  
    @language =N'Python', 
    @script=N' 
    OutputDataSet = InputDataSet; 
    ', 
    @input_data_1 =N'SELECT 1 AS hello' 
    WITH RESULT SETS (([hello] int not null)); 
    GO 
    

脱机安装

有关安装包的步骤,请按照脱机安装说明进行操作。 找到下载网站,然后使用下面的包列表下载特定的包。

提示

一些包管理工具提供可帮助确定包依赖项的命令。 对于 yum,请使用 sudo yum deplist [package]。 对于 Ubuntu,请在使用 sudo apt-get install --reinstall --download-only [package name] 之后使用 dpkg -I [package name].deb

适用于 Python 和 R 运行时的独立 RevoScale 包

RevoScale 包也作为适用于 Python 和 R 运行时的独立包受支持。 若要为独立方案设置 Python 或 R 运行时,请分别按照安装 Python 运行时安装 R 运行时部分中的说明执行操作。

Python 开发人员可以通过以下教程了解如何将 Python 与 SQL Server 一起使用:

R 开发人员可以开始使用一些简单的示例,并了解 R 如何与 SQL Server 协同工作的基础知识。 有关下一步,请参阅以下链接: