Estensione del linguaggio R in Machine Learning Services per SQL Server
Si applica a: SQL Server 2016 (13.x) e versioni successive
Questo articolo descrive l'estensione R per l'esecuzione di script Python esterni con Machine Learning Services per SQL Server e R Services per SQL Server 2016. L'estensione aggiunge:
- Ambiente di esecuzione R
- Distribuzione R di base con librerie e strumenti standard
- Librerie R Microsoft:
- RevoScaleR per l'analisi su larga scala
- MicrosoftML per gli algoritmi di Machine Learning. Si applica solo a SQL Server 2016, SQL Server 2017 e SQL Server 2019.
- Altre librerie per l'accesso ai dati o al codice R in SQL Server
Componenti R
SQL Server include pacchetti sia open source che proprietari. Le librerie R di base vengono installate tramite la distribuzione Microsoft di R open source: Microsoft R Open (MRO). Gli utenti correnti di R dovrebbero riuscire a trasferire il codice R ed eseguirlo come processo esterno su SQL Server con un numero limitato di modifiche o addirittura nessuna modifica. La distribuzione MRO viene installata indipendentemente dagli strumenti SQL e viene eseguita all'esterno dei processi del motore di base, nel framework di estendibilità. Durante l'installazione è necessario accettare le condizioni della licenza open source. Successivamente, è possibile eseguire i pacchetti R standard senza ulteriori modifiche, esattamente come per qualsiasi altra distribuzione open source di R.
Per SQL Server 2016 (13.x), SQL Server 2017 (14.x) e SQL Server 2019 (15.x) SQL Server non modifica i file eseguibili R di base, ma è necessario usare la versione di R installata dal programma di installazione perché è quella su cui vengono compilati e testati i pacchetti proprietari. Per altre informazioni sulle differenze tra MRO e una distribuzione di base di R che è possibile ottenere da CRAN, vedere Interoperabilità con il linguaggio R e con i prodotti e le funzionalità Microsoft R.
La distribuzione di base dei pacchetti R installata dal programma di installazione è disponibile nella cartella associata all'istanza. Se, ad esempio, è stato installato R Services in un'istanza predefinita di SQL Server, le librerie di R si trovano per impostazione predefinita in questa cartella: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
. Analogamente, gli strumenti per R associati all'istanza predefinita si troverebbero per impostazione predefinita in questa cartella: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin
.
I pacchetti R aggiunti da Microsoft per i carichi di lavoro paralleli e distribuiti includono le librerie elencate di seguito.
Libreria | Descrizione |
---|---|
RevoScaleR | Supporta gli oggetti origine dati e anche l'esplorazione, la manipolazione, la trasformazione e la visualizzazione dei dati. Supporta inoltre la creazione di contesti di calcolo remoti e diversi modelli di Machine Learning scalabili, ad esempio rxLinMod. Le API sono state ottimizzate per l'analisi dei set di dati troppo grandi per essere contenuti in memoria e per l'esecuzione di calcoli distribuiti su più core o processori. Il pacchetto RevoScaleR supporta anche il formato di file XDF per una maggiore rapidità di spostamento e archiviazione dei dati usati per l'analisi. Il formato XDF usa l'archiviazione a colonne, è portabile e può essere usato per caricare e quindi manipolare i dati da diverse origini, tra cui testo, SPSS o una connessione ODBC. |
MicrosoftML | Contiene gli algoritmi di Machine Learning ottimizzati per la velocità e l'accuratezza, nonché le trasformazioni inline per l'utilizzo di testo e immagini. Per altre informazioni, vedere MicrosoftML in SQL Server. Si applica solo a SQL Server 2016, SQL Server 2017 e SQL Server 2019. |
A partire da SQL Server 2022 (16.x), i runtime per R, Python e Java non vengono più installati con l'installazione di SQL. Installare invece i runtime e i pacchetti personalizzati per R e/o Python che si intende usare. Per altre informazioni, vedere Installare SQL Server 2022 Machine Learning Services in Windows o Installare SQL Server Machine Learning Services (Python e R) in Linux.
Uso di R in SQL Server
È possibile creare uno script R usando le funzioni di base, ma per trarre vantaggio dalla multielaborazione è necessario importare i moduli RevoScaleR e MicrosoftML nel codice R e quindi chiamare le relative funzioni per creare modelli da eseguire in parallelo.
Le origini dati supportate includono i database ODBC, SQL Server e il formato di file XDF per lo scambio di dati con altre origini o con soluzioni R. I dati di input devono essere in formato tabulare. Tutti i risultati di R devono essere restituiti sotto forma di dataframe.
I contesti di calcolo supportati includono il contesto di calcolo di SQL Server, locale o remoto. Un contesto di calcolo remoto fa riferimento all'esecuzione del codice avviata in un computer, ad esempio una workstation, per poi passare l'esecuzione dello script a un computer remoto. Per cambiare il contesto di calcolo è necessario che entrambi i sistemi abbiano la stessa libreria RevoScaleR.
Il contesto di calcolo locale, come si può prevedere, include l'esecuzione del codice R sullo stesso server dell'istanza del motore di database, con il codice all'interno di T-SQL o incorporato in una stored procedure. È anche possibile eseguire il codice da un IDE di R locale e far eseguire lo script nel computer SQL Server, definendo un contesto di calcolo remoto.
Architettura di esecuzione
I diagrammi seguenti illustrano l'interazione dei componenti di SQL Server con il runtime R in ognuno degli scenari supportati: esecuzione di script nel database ed esecuzione remota da una riga di comando R, usando un contesto di calcolo di SQL Server.
Script R eseguiti da SQL Server (In-Database)
Dall'interno di SQL Server, il codice R viene eseguito chiamando una stored procedure. Qualsiasi applicazione in grado di eseguire una chiamata a una stored procedure può quindi avviare l'esecuzione del codice R. Successivamente, SQL Server gestisce l'esecuzione del codice R, come riepilogato nel diagramma seguente.
- Una richiesta per il runtime R è indicata dal parametro @language='R' passato alla stored procedure, sp_execute_external_script. SQL Server invia la richiesta al servizio launchpad. In Linux, SQL usa un servizio launchpadd per comunicare con un processo launchpad separato per ogni utente. Per informazioni dettagliate, vedere il diagramma dell'architettura di estendibilità.
- Il servizio launchpad avvia l'utilità di avvio appropriata, in questo caso RLauncher.
- RLauncher avvia il processo R esterno.
- BxlServer si coordina con il runtime R per gestire gli scambi di dati con SQL Server e l'archiviazione dei risultati.
- SQL Satellite gestisce le comunicazioni relative ad attività e processi correlati con SQL Server.
- BxlServer usa SQL Satellite per comunicare lo stato e i risultati a SQL Server.
- SQL Server ottiene i risultati e chiude le attività e i processi correlati.
Script R eseguiti da un client remoto
Quando viene stabilita la connessione da un client di data science remoto che supporta Microsoft R, è possibile eseguire le funzioni R nel contesto di SQL Server usando le funzioni RevoScaleR. Si tratta di un flusso di lavoro diverso dal precedente, riepilogato nel diagramma seguente.
- Per le funzioni RevoScaleR, il runtime R chiama una funzione di collegamento che a sua volta chiama BxlServer.
- BxlServer viene fornito con Microsoft R ed eseguito in un processo separato dal runtime R.
- BxlServer determina la destinazione della connessione e avvia una connessione tramite ODBC, passando le credenziali fornite come parte della stringa di connessione nell'oggetto origine dati R.
- BxlServer apre una connessione all'istanza di SQL Server.
- Per una chiamata a R, viene richiamato il servizio launchpad, che a sua volta avvia l'utilità di avvio appropriata, in questo caso RLauncher. Da questo momento, l'elaborazione del codice R è simile al processo per l'esecuzione di codice R da T-SQL.
- RLauncher effettua una chiamata all'istanza del runtime R installata nel computer SQL Server.
- I risultati vengono restituiti a BxlServer.
- SQL Satellite gestisce le comunicazioni con SQL Server e la pulizia degli oggetti processo correlati.
- SQL Server passa i risultati al client.