通过机器学习服务在 SQL Server 2019 大数据群集上运行 Python 和 R 脚本

适用于: SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 有关详细信息,请参阅 Microsoft SQL Server 平台上的大数据选项

可以通过机器学习服务SQL Server 大数据群集的主实例上运行 Python 和 R 脚本。

注意

还可以通过 Java 语言扩展在 SQL Server 大数据群集的主实例上运行 Java 代码。 按照以下步骤操作还将启用 SQL Server 语言扩展

启用机器学习服务

机器学习服务默认安装在 SQL Server 2019 大数据群集上,并且不需要单独安装。

若要启用机器学习服务,请在主实例上运行以下语句:

EXEC sp_configure 'external scripts enabled', 1
RECONFIGURE WITH OVERRIDE
GO

现在可以在大数据群集的主实例上运行 Python 和 R 脚本。 请参阅后续步骤下的快速入门,运行第一个脚本。

备注

无法在可用性组侦听程序连接上设置配置设置。 如果大数据群集部署了高可用性,则对每个副本设置 external scripts enabled。 请参阅在具有高可用性的群集上启用

具有高可用性的群集上启用

部署高可用性 SQL Server 大数据群集时,部署会为主实例创建可用性组。 若要启用机器学习服务,请在可用性组的每个实例上设置 external scripts enabled。 对于大数据群集,需要在 SQL Server 主实例的每个副本上运行 sp_configure

以下部分介绍如何在每个实例上启用外部脚本。

为每个实例创建外部负载均衡器

对于可用性组上的每个副本,创建负载均衡器以便可以连接到实例。

kubectl expose pod <pod-name> --port=<connection port number> --name=<load-balancer-name> --type=LoadBalancer -n <kubernetes namespace>

本文中的示例使用以下值:

  • <pod-name>: master-#
  • <connection port number>: 1533
  • <load-balancer-name>: mymaster-#
  • <kubernetes namespace>: mssql-cluster

为环境更新以下脚本,并运行命令:

kubectl expose pod master-0 --port=1533 --name=mymaster-0 --type=LoadBalancer -n mssql-cluster
kubectl expose pod master-1 --port=1533 --name=mymaster-1 --type=LoadBalancer -n mssql-cluster
kubectl expose pod master-2 --port=1533 --name=mymaster-2 --type=LoadBalancer -n mssql-cluster

kubectl 会返回以下输出。

service/mymaster-0 exposed
service/mymaster-1 exposed
service/mymaster-2 exposed

每个负载均衡器都是主副本终结点。

对每个副本启用脚本执行

  1. 获取主副本终结点的 IP 地址。

    以下命令返回副本终结点的外部 IP 地址。

    kubectl get services <load-balancer-name> -n <kubernetes namespace>

    若要在此方案中获取每个副本的外部 IP 地址,请运行以下命令:

    kubectl get services mymaster-0 -n mssql-cluster
    kubectl get services mymaster-1 -n mssql-cluster
    kubectl get services mymaster-2 -n mssql-cluster
    

    备注

    可能需要一些时间才能获得外部 IP 地址。 定期运行上述脚本,直到每个终结点都返回外部 IP 地址。

  2. 连接到主副本终结点并启用脚本执行。

    运行以下语句:

    EXEC sp_configure 'external scripts enabled', 1
    RECONFIGURE WITH OVERRIDE
    GO
    

    例如,可以使用 sqlcmd 运行上述命令。 下面的示例连接到主副本终结点并启用脚本执行。 将脚本中的值更新为适用于你环境的值。

    sqlcmd -S <IP address>,1533 -U <user name> -P <password> -Q "EXEC sp_configure 'external scripts enabled', 1; RECONFIGURE WITH OVERRIDE;"
    

    为每个副本重复该步骤。

演示

下图演示了此过程。

命令提示符的屏幕截图,提供了启用外部脚本所需的步骤的演示。

现在可以在大数据群集的主实例上运行 Python 和 R 脚本。 请参阅后续步骤下的快速入门,运行第一个脚本。

删除主副本终结点

在 Kubernetes 群集上,删除每个副本的终结点。 终结点在 Kubernetes 中作为负载均衡服务公开。

以下命令删除负载均衡服务。

kubectl delete svc <load-balancer-name> -n mssql-cluster

对于本文中的示例,请运行以下命令。

kubectl delete svc mymaster-0 -n mssql-cluster
kubectl delete svc mymaster-1 -n mssql-cluster
kubectl delete svc mymaster-2 -n mssql-cluster

SQL Server 大数据群集机器学习快速入门

Python 快速入门

R 快速入门

SQL Server 大数据群集机器学习教程

Python 教程

雪橇租赁(线性回归)

对客户进行分类(k-means 群集)

纽约出租车提示(分类)

R 教程

滑雪租赁(决策树)

对客户进行分类(k-means 群集)

纽约出租车提示(分类)

SQL Server 大数据群集机器学习操作指南

数据探索和建模

数据类型转换

部署

预测

包管理

安装新 Python 包

安装新 R 包

监视

安全性

Spark 机器学习

后续步骤