Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2016 (13.x) und höhere Versionen
Bei diesem Tutorial handelt es sich um das 4. Tutorial von Lernprogramm: Verwenden von RevoScaleR-Funktionen für R mit SQL Server-Daten. Hier erfahren Sie, wie Sie RevoScaleR-Funktionen mit SQL Server verwenden.
Im vorherigen Tutorial haben Sie RevoScaleR-Funktionen zum Untersuchen von Datenobjekten verwendet. In diesem Tutorial wird die RxInSqlServer-Funktion erläutert, mit der Sie einen Computekontext für einen Remote-SQL-Server definieren können. Mit einem Remotecomputekontext können Sie die R-Ausführung von einer lokalen Sitzung zu einer Remotesitzung auf dem Server verschieben.
- Grundlegendes zu SQL Server-Remotecomputekontext
- Aktivieren der Ablaufverfolgung für ein Computecontextobjekt
RevoScaleR unterstützt mehrere Computekontexte: Hadoop, Spark in HDFS und datenbankinterne SQL Server. Für SQL Server wird die RxInSqlServer-Funktion für Serververbindungen und das Übergeben von Objekten zwischen dem lokalen Computer und dem Remoteausführungskontext verwendet.
Erstellen und Festlegen eines Computekontexts
Die RxInSqlServer-Funktion, die den SQL Server-Computekontext erstellt, verwendet die folgenden Informationen:
- Verbindungszeichenfolge für die SQL Server-Instanz
- Spezifikation zur Verarbeitung der Ausgabe
- Optionale Spezifikation eines freigegebenen Datenverzeichnisses
- Optionale Argumente, die die Ablaufverfolgung oder das Angeben der Ablaufverfolgungsebene ermöglichen
In diesem Abschnitt werden Sie durch die einzelnen Teile geführt.
Geben Sie die Verbindungszeichenfolge für die Instanz an, in der die Berechnungen durchgeführt werden sollen. Sie können die zuvor erstellte Verbindungszeichenfolge erneut verwenden.
Verwenden einer SQL-Anmeldung
sqlConnString <- "Driver=SQL Server;Server=<SQL Server instance name>; Database=<database name>;Uid=<SQL user nme>;Pwd=<password>"Verwenden der Windows-Authentifizierung
sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"Geben Sie an, wie die Ausgabe behandelt werden soll. Mit dem folgenden Skript wird die lokale R-Sitzung angewiesen, auf R-Auftragsergebnisse auf dem Server zu warten, bevor der nächste Vorgang verarbeitet wird. Außerdem wird so die Ausgabe von Remoteberechnungen in der lokalen Sitzung unterdrückt.
sqlWait <- TRUE sqlConsoleOutput <- FALSEDas Argument wait für RxInSqlServer unterstützt diese Optionen:
TRUE. Der Auftrag wird als „blockiert“ konfiguriert und wird nicht zurückgegeben, bis er abgeschlossen wurde oder ein Fehler aufgetreten ist.
FALSE. Aufträge werden als „nicht blockierend“ konfiguriert und sofort zurückgegeben, sodass Sie weiterhin anderen R-Code ausführen können. Jedoch auch im nicht blockierenden Modus muss die Clientverbindung mit SQL Server aufrechterhalten werden, während der Auftrag ausgeführt wird.
Optional können Sie den Speicherort eines lokalen Verzeichnisses angeben, das von der lokalen R-Sitzung und dem SQL Server-Remotecomputer und dessen Konten für den Gebrauch freigegeben wurde.
sqlShareDir <- paste("c:\\AllShare\\", Sys.getenv("USERNAME"), sep="")Wenn Sie manuell ein bestimmtes Verzeichnis für die Freigabe erstellen möchten, können Sie eine Zeile wie die folgende hinzufügen:
dir.create(sqlShareDir, recursive = TRUE)Übergeben Sie Argumente an den RxInSqlServer-Konstruktor, um das Computecontextobjekt zu erstellen.
sqlCompute <- RxInSqlServer( connectionString = sqlConnString, wait = sqlWait, consoleOutput = sqlConsoleOutput)Die Syntax für RxInSqlServer ist fast identisch mit der Syntax der RxSqlServerData-Funktion, die Sie zuvor zum Definieren der Datenquelle verwendet haben. Es gibt jedoch auch wichtige Unterschiede.
Das Datenquellenobjekt (mithilfe der Funktion RxSqlServerDatadefiniert) gibt an, wo die Daten gespeichert werden.
Im Gegensatz dazu gibt der mit der RxInSqlServer-Funktion definierte Computekontext an, wo Aggregationen und andere Berechnungen durchgeführt werden.
Das Definieren eines Computekontexts wirkt sich nicht auf andere generische R-Berechnungen aus, die Sie auf Ihrer Arbeitsstation ausführen können, und ändert nicht die Quelle der Daten. Sie können z.B. eine lokale Textdatei als Datenquelle definieren, aber SQL Server als Computekontext verwenden und alle Lesevorgänge und Zusammenfassungen der Daten auf dem SQL Server-Computer ausführen.
Aktivieren Sie den Remotecomputekontext.
rxSetComputeContext(sqlCompute)Geben Sie Informationen über den Computekontext einschließlich der zugehörigen Eigenschaften zurück.
rxGetComputeContext()Aktivieren Sie wieder den Computekontext des lokalen Computers, indem Sie das Schlüsselwort „local“ (lokal) angeben. Die Verwendung des Remotecomputekontexts wird im nächsten Tutorial erläutert.
rxSetComputeContext("local")
Tipp
Sie erhalten eine Liste der Schlüsselwörter, die von dieser Funktion unterstützt werden, indem Sie help("rxSetComputeContext") in der Befehlszeile von R eingeben.
Aktivieren der Ablaufverfolgung
Es kann vorkommen, dass Vorgänge, die in Ihrem lokalen Kontext funktionieren, jedoch Probleme bei der Ausführung in einem Remotecomputekontext haben. Wenn Sie Probleme analysieren oder die Leistung überwachen möchten, können Sie die Ablaufverfolgung im Computekontext aktivieren, um die Problembehandlung der Laufzeit zu unterstützen.
Erstellen Sie einen neuen Computekontext, der die gleiche Verbindungszeichenfolge verwendet, aber fügen Sie dem RxInSqlServer-Konstruktor die Argumente traceEnabled und traceLevel hinzu.
sqlComputeTrace <- RxInSqlServer( connectionString = sqlConnString, #shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput, traceEnabled = TRUE, traceLevel = 7)In diesem Beispiel ist traceLevel auf 7 gesetzt, d.h. „alle Ablaufverfolgungsinformationen anzeigen“.
Verwenden Sie die rxSetComputeContext-Funktion, um den für die Ablaufverfolgung aktivierten Computekontext anhand des Namens anzugeben.
rxSetComputeContext(sqlComputeTrace)
Nächste Schritte
Informieren Sie sich, wie Sie Computekontexte wechseln, um R-Code auf dem Server oder lokal auszuführen.