對安裝有機器學習服務的 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