R-Spracherweiterung in SQL Server Machine Learning Services

Anwendungsbereich: JaSQL Server 2016 (13.x) und höher

In diesem Artikel wird die R-Erweiterung für die Ausführung externer Python-Skripts mit SQL Server Machine Learning Services und SQL Server 2016 R Services beschrieben. Die Erweiterung fügt Folgendes hinzu:

  • Eine R-Ausführungsumgebung
  • Grundlegende R-Distribution mit Standardbibliotheken und -Tools
  • Microsoft R-Bibliotheken:
    • RevoScaleR für vielseitige Analysen
    • MicrosoftML für Machine-Learning-Algorithmen
    • Weitere Bibliotheken für den Zugriff auf Daten oder R-Code in SQL Server

R-Komponenten

SQL Server enthält sowohl Open Source- als auch proprietäre Pakete. Die Basis-R-Bibliotheken werden über die Microsoft-Verteilung von Open Source-R installiert: Microsoft R Open (MRO). Aktuelle Benutzer von R sollten in der Lage sein, ihren R-Code zu portieren und mit wenigen oder keinen Änderungen als externen Prozess auf SQL Server auszuführen. MRO wird unabhängig von SQL-Tools installiert und außerhalb der Kernprozesse der Engine im Erweiterbarkeitsframework ausgeführt. Während der Installation müssen Sie den Bedingungen der Open-Source-Lizenz zustimmen. Anschließend können Sie Standard-R-Pakete ohne weitere Änderungen ausführen, wie Sie es von jeder anderen Open-Source-Verteilung von R gewohnt sind.

SQL Server ändert die ausführbaren R-Basisdateien nicht, Sie müssen jedoch die Version von R verwenden, die von Setup installiert wird, da auf dieser Version die proprietären Pakete erstellt und getestet werden. Weitere Informationen über die Unterschiede zwischen MRO und einer Basisverteilung von R, die Sie möglicherweise von CRAN erhalten, finden Sie unter Interoperabilität mit R-Sprache und Microsoft R-Produkten und-Funktionen.

Die von Setup installierte R-Basispaketverteilung befindet sich in dem der Instanz zugeordneten Ordner. Wenn Sie beispielsweise R Services auf einer SQL Server-Standardinstanz installiert haben, befinden sich die R-Bibliotheken standardmäßig in diesem Ordner: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. Entsprechend befinden sich die mit der Standardinstanz verknüpften R-Tools standardmäßig in folgendem Ordner: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

R-Pakete, die von Microsoft für parallele und verteilte Workloads hinzugefügt wurden, umfassen die folgenden Bibliotheken.

Bibliothek BESCHREIBUNG
RevoScaleR Unterstützt Datenquellenobjekte sowie die Exploration, Manipulation, Transformation und Visualisierung von Daten. Unterstützt die Erstellung von Remotecomputekontexten sowie verschiedene skalierbare Machine Learning-Modelle wie rxLinMod. Die APIs wurden optimiert, um Datensätze zu analysieren, die zu groß sind, um in den Arbeitsspeicher zu passen und Berechnungen über mehrere Kerne oder Prozessoren verteilt auszuführen. Das RevoScaleR-Paket unterstützt auch das XDF-Dateiformat für schnellere Verschiebungen und die Speicherung von Daten, die für die Analyse verwendet werden. Das XDF-Format verwendet die spaltenweise Speicherung, ist übertragbar und kann zum Laden und anschließend zum Ändern der Daten aus verschiedenen Quellen, z.B. Text, SPSS oder eine ODBC-Verbindung verwendet werden.
MicrosoftML Enthält Algorithmen für das maschinelle Lernen, die hinsichtlich Geschwindigkeit und Genauigkeit optimiert wurden, sowie Inline-Transformationen für die Arbeit mit Text und Bildern. Weitere Informationen finden Sie unter MicrosoftML in SQL Server.

Verwenden von R in SQL Server

Sie können Skripts für R mithilfe von Basisfunktionen erstellen, um jedoch von Multiprocessing zu profitieren, müssen Sie die Module RevoScaleR und MicrosoftML in Ihren R-Code importieren und anschließend deren Funktionen aufrufen, um parallel ausgeführte Modelle zu erstellen.

Unterstützte Datenquellen sind ODBC-Datenbanken, SQL Server und das XDF-Dateiformat, um Daten mit anderen Quellen oder mit R-Lösungen auszutauschen. Eingabedaten müssen tabellarisch sein. Alle R-Ergebnisse müssen in Form eines Datenrahmens zurückgegeben werden.

Unterstützte Computekontexte sind lokale oder SQL Server-Remotecomputekontexte. Ein Remotecomputekontext bezieht sich auf die Codeausführung, die auf einem Computer (beispielsweise einer Arbeitsstation) beginnt, aber dann die Skriptausführung auf einen Remotecomputer schaltet. Zum Wechseln des Computekontexts müssen beide Systeme dieselbe RevoScaleR-Bibliothek aufweisen.

Ein lokaler Computekontext umfasst naturgemäß die Ausführung von R-Code auf demselben Server wie die Instanz der Datenbank-Engine, wobei sich der Code in T-SQL befindet oder in eine gespeicherte Prozedur eingebettet ist. Sie können den Code auch aus einer lokalen R-IDE ausführen und das Skript auf dem SQL Server-Computer ausführen lassen, indem Sie einen Remotecomputekontext definieren.

Ausführungsarchitektur

Die folgenden Diagramme zeigen die Interaktion von SQL Server-Komponenten mit der R-Runtime in jedem der unterstützten Szenarios: datenbankinternes Ausführen von Skripts und Remoteausführung von einer R-Befehlszeile aus unter Verwendung eines SQL Server-Computekontexts.

R-Skripts, die von SQL Server datenbankintern ausgeführt werden

R-Code, der „innerhalb“ von SQL Server ausgeführt wird, wird durch das Aufrufen einer gespeicherten Prozedur ausgeführt. Daher kann jede Anwendung, die eine gespeicherte Prozedur aufrufen kann, die Ausführung von R-Code initiieren. Anschließend verwaltet SQL Server die Ausführung von R-Code, wie dies im folgenden Diagramm gezeigt wird.

rsql_indb780-01

  1. Eine Anforderung für die R-Laufzeit wird vom Parameter @language='R' indiziert, der an die gespeicherte Prozedur sp_execute_external_script übergeben wird. SQL Server sendet diese Anforderung an den Launchpad-Dienst. Unter Linux verwendet SQL einen launchpadd-Dienst, um mit einem separaten Launchpad-Prozess für jeden Benutzer zu kommunizieren. Ausführliche Informationen finden Sie im Diagramm zur Erweiterbarkeitsarchitektur.
  2. Der Launchpad-Dienst startet das entsprechende Startprogramm, in diesem Fall RLauncher.
  3. RLauncher startet den externen Prozess von R.
  4. BxlServer koordiniert mit der R-Runtime, um den Datenaustausch mit SQL Server und die Speicherung von Arbeitsergebnissen zu verwalten.
  5. SQL Satellite verwaltet die Kommunikation über zugehörige Aufgaben und Prozesse mit SQL Server.
  6. BxlServer verwendet SQL Satellite, um Status und Ergebnisse an SQL Server zu übermitteln.
  7. SQL Server ruft die Ergebnisse ab und schließt zugehörige Aufgaben und Prozesse.

Von einem Remoteclient ausgeführte R-Skripts

Wenn Sie eine Verbindung von einem Remote-Data Science-Client herstellen, der Microsoft R unterstützt, können Sie R-Funktionen im Kontext von SQL Server durch Verwenden der RevoScaleR-Funktionen ausführen. Dieser Workflow unterscheidet sich vom vorherigen und wird im folgenden Diagramm zusammengefasst.

rsql_fromR2db-01

  1. Die R-Runtime ruft für RevoScaleR-Funktionen eine Verknüpfungsfunktion auf, die wiederum BxlServer aufruft.
  2. BxlServer wird in Microsoft R und in einem separaten Prozess von der R-Laufzeit bereitgestellt.
  3. BxlServer bestimmt das Verbindungsziel und initiiert eine Verbindung mithilfe von ODBC, wobei Anmeldeinformationen, die als Teil der Verbindungszeichenfolge im R-Datenquellenprojekt bereitgestellt werden, übergeben werden.
  4. BxlServer öffnet eine Verbindung mit der SQL Server-Instanz.
  5. Für einen R-Aufruf wird der Launchpad-Dienst aufgerufen, der wiederum das erforderliche Startprogramm, RLauncher, startet. Die Verarbeitung von R-Code ähnelt dem Vorgang, R-Code von T-SQL auszuführen.
  6. RLauncher ruft die Instanz der R-Runtime ab, die auf dem SQL Server-Computer gespeichert ist.
  7. Ergebnisse werden an BxlServer zurückgegeben.
  8. SQL Satellite verwaltet die Kommunikation mit SQL Server sowie die Bereinigung zugehöriger Auftragsobjekte.
  9. SQL Server gibt die Ergebnisse an den Client zurück.

Weitere Informationen