Integration der Programmiersprache R in SAP HANA

In diesem Blog möchte ich die Integration der Programmiersprache R in SAP HANA SP4 vorstellen. Vorab möchte ich jedoch kurz erläutern was R überhaupt ist und welchen Stellenwert es heute, insbesondere auch in der Wissenschaft hat.

Was ist R?

R ist eine Umsetzung der statistischen Programmiersprache S. R ist eine Programmiersprache und Programm-Umgebung zur statistischen Datenverarbeitung, sowie deren grafischer Darstellungen bzw. Visualisierung. Die Software besteht aus einem Basis-Paket und Erweiterungspaketen, sogenannten Packages. R ist für beinahe alle Betriebssysteme verfügbar. Außerdem ist R als “GNU General Public License” lizensiert, d.h. R ist eine freie Software. Neben der Kostenfreiheit ist ihre Aktualität hervorzuheben: weltweit stellen Mathematiker und Statistiker ihre neuesten Algorithmen als Erweiterungspakete für R zur Verfügung. Mit dem Programm erhält man also eine professionelle Anwendung für beinahe jedes Problem, das sich in Zahlen ausdrücken lässt. Wird zum Beispiel ein neuer Algorithmus an der bekannten Stanford University entdeckt, dann kann es einige Jahre bis dieser Algorithmus in kommerzieller Software überhaupt zum ersten Mal implementiert wird, währenddessen dieser in R nach kürzester Zeit verfügbar ist, wenn nicht sogar bereits mit der Veröffentlichung.

Welche Bedeutung hat R?

R ist eine zitierbare wissenschaftliche Publikation, ebenso wie die über 3.000 verfügbaren Erweiterungspaketen. Die Benutzung von R bedeutet Unabhängigkeit des wissenschaftlichen Arbeitens und Aktualität der Methoden. Weltweit nutzen daher hunderttausende von Wissenschaftlern und Studierenden aus den verschiedensten Diszplinen R. Die Software muss mittlerweile als de facto Standard an Universitäten angesehen werden. Man könnte auch sagen, R ist die neue weltweite lingua franca der quantitativ forschenden Wissenschaft.

Ab welchem HANA Release kann ich R verwenden? – Und wie kann ich R verwenden?

Mit dem Release von SAP HANA SP4 (ab Revision 28) kann die Programmiersprache R in SQLScript eingebettet verwendet werden. Der R Code wird dabei als RLANG Prozedur in SQLScript eingebettet. Zur Ausführung dieser Prozeduren setzt HANA eine Installation von R und dem Dienst R Serve auf einem separaten Host voraus. Laut SAP Dokumentation wird derzeit als Hostbetriebssystem nur Linux unterstützt, bevorzugt wird jedoch SUSE Linux. Des Weiteren ist der Dokumentation zu entnehmen, dass SAP die Integration erfolgreich getestet hat mit R in der Version 2.13 und Rserve in der Version 0.6-5. Die Ausführung einer RLANG Prozedur kann mit der Ausführung nativer Datenbankfunktion wie z.B. Join Operation oder Aggregationen verglichen werden. Durch diese Art der Integration können HANA Anwendungsentwickler elegant R Funktionsdefinitionen und -aufrufe innerhalb von SQLScript einbetten und den gesamten Code als Teil einer Abfrage an die Datenbank schicken.

Wie funktioniert die R-Integration?

Um dies zu erreichen, wurde die Calculation Enginge (CalcEngine) der SAP HANA-Datenbank erweitert. Die Calculation Engine unterstützt Datenflussgraphen (calcModels) die logische Datenbankausführungspläne unterstützt. Ein Knoten in diesem Datenflußgraph kann jeder nativen Datenbankoperation oder einer benutzerdefinierten Operation entsprechen. Einer dieser benutzerdefinierten Operationen ist der benutzerdefinierte R-Operator.

Wie jeder andere Operator des Datenflussgraphen konsumiert der R-Operator eine Menge von Eingangsobjekten (z.B. Zwischenergebnisse in Tabellen aus zuvor ausgeführten Berechnungen oder anderen Datenquellen wie bspw. einer spalten oder zeilenbasierten Tabelle in HANA) und gibt eine Ergebnistabelle zurück. Im Gegensatz zu nativen Datenbankoperationen werden benutzerdefinierte Operatoren nicht auf eine statische Implementierung beschränkt und kann für jeden Knoten unabhängig angepasst werden. Im Falle des R-Operator wird dies durch den R Funktionscode erreicht, welcher als Zeichenfolgenargument an den Operator übertragen wird.

Wenn der Ausführungsplan einen R-Operator erreicht, dann gibt der R-Client der CalcEngine durch den Rserve Mechanismus eine Anfrage auf um einen dedizierten R-Prozess auf dem R-Host zu erstellen. Dann überträgt der R-Client den R-Funktionscode sowie die Eingangstabellen an den R-Prozess und löst die Ausführung des R-Codes aus. Sobald der R-Prozess die Ausführung der Funktion abgeschlossen hat, wird der resultierende data frame (R arbeitet mit sogenannten data frames, welche man mit spaltenbasierten Tabellen vergleichen kann) an die CalcEngine übergeben, welche diesen umwandelt. Auf Grund der Tatsache das Zwischenergebnisse, wie z.B. nach der Ausführung eines R-Operator, innerhalb von HANA in einer spaltenorientierten Datenstruktur vorgehalten werden, die sehr ähnlich dem Vektor orientierten R Data Frame sind, ist diese Umwandlung des Data Frame sehr effizient.

Ein entscheidender Vorteil der damit zusammenhängt das sich die gesamte Ablaufsteuerung auf der Datenbankseite befindet ist, dass die Datenbankausführungspläne grundsätzlich parallel sind und deshalb mehrere R-Prozesse parallel getriggert werden können, ohne sich um die parallele Ausführung in einem einzigen Prozess R kümmern zu müssen.

Soweit zur Bedeutung von R und der Architektur der R Integration in HANA. In meinem nächsten Blog gehe ich auf die technische Installation und die Verwendung von R ein.

Getagged mit: , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*