Übergabe von Code an R AE

Sprachadapter für kompilierte Sprachen wie C++ und Fortran sind als Wrapper für die C-API konzipiert und erlauben keinen benutzerdefinierten Code in der Laufzeit. Die Sprache R ist anders, weil jedes R-Snippet interpretiert und nicht kompiliert wird, wenn es als analytische ausführbare Datei gestartet wird.

Es wird davon ausgegangen, dass bei der Verwendung von R der Code über Umgebungsvariablen als serialisierter und base-64 Klartext oder durch Verweis auf eine im Dateisystem gespeicherte Datei an die AE übergeben wird. In einigen dieser Modi wird das Vorhandensein von serialisierten R-Objekten vorausgesetzt, während in anderen der Code so übergeben wird, wie er ist. Allen Modi ist gemeinsam, dass die Benutzereingabe als letztes Argument der Funktion oder des Aggregats, das gestartet wird, übergeben wird. Dieser Mechanismus wird als dynamische Umgebung bezeichnet:
SELECT * FROM some_table, TABLE WITH FINAL(r_udtf(some_table.some_column,
'ABSOLUTE_PATH=/path/to/a/file.R'));
Die verfügbaren Modi sind:
ABSOLUTE_PATH
Zeigt auf eine beliebige im Dateisystem verfügbare Datei, wobei die referenzierte Datei eine serialisierte Liste mit Funktionen und Daten enthält.
Wenn auf diese Datei sowohl vom Host als auch von den SPUs aus zugegriffen werden soll, ist die beste Lösung, sie in der NFS zu speichern. Die NFS wird nämlich durch die Umgebungsvariable ' $NZ_EXPORT_DIR ' $NZ_EXPORT_DIR/ae angegeben.
ARBEITSPLATZ_PATH
Zeigt auf eine Datei desselben Formats, die sich jedoch im Verzeichnis des Arbeitsbereichs befindet, das standardmäßig ' $NZ_EXPORT_DIR/ae/workspace/nz/r_ae lautet.
PLAIN_PATH
Zeigt auf eine Datei, die R-Quellcode mit demselben Inhalt enthält. In diesem Fall wird die referenzierte Datei nicht serialisiert.
CODE_SERIALISIERT
Enthält eine serialisierte und base64-encoded Liste.
CODE_PLAIN
Dieser Modus eignet sich am besten zum Einbetten von R-Code in SQL-Abfragen und gespeicherte Prozeduren, erfordert jedoch Vorsicht, um sicherzustellen, dass der Code korrekt escaped wird, wie von SQL und Dynamic Environment gefordert.