通过机器学习服务在 SQL Server 2019 大数据群集上运行 Python 和 R 脚本
适用范围:SQL Server 2019 (15.x)
重要
Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章和 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
每个负载均衡器都是主副本终结点。
对每个副本启用脚本执行
获取主副本终结点的 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 地址。
连接到主副本终结点并启用脚本执行。
运行以下语句:
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