CRAN

Das Comprehensive R Archive Network (CRAN) ist ein Netzwerk von Servern auf der ganzen Welt, das " storeR -Distributionen, Erweiterungen, Dokumentation und Binärdateien bereitstellt. Die meisten Spiegelserver werden an Universitäten in der ganzen Welt gehostet, wodurch eine aktive Open-Source-Gemeinschaft entsteht. Das Repository wird von der R-Gemeinschaft ausgiebig genutzt, da es eine große Anzahl von Zusatzpaketen enthält, die im Allgemeinen unter der GPL-Lizenz verfügbar sind. Benutzer können das CRAN-Repository nutzen und die ausgewählten Pakete herunterladen, wobei sie beachten sollten, dass diese Pakete vollständig außerhalb von Netezza liegen.

CRAN-Pakete können auf Netezza installiert werden. Das Netezza R-Bibliothekspaket bietet Werkzeuge für die Installation und Verwaltung von CRAN-Paketen.

nzInstallPackages, nzIsPackageInstalled

Um ein Paket zu installieren, verwenden Sie ' nzInstallPackages(). Beachten Sie, dass sowohl auf dem Host als auch auf den SPUs standardmäßig ein zweistufiger Installationsprozess vorgesehen ist. Die Funktionsausgabe (Installationsprotokoll) für eine erfolgreiche Installation eines Pakets ist im folgenden Beispiel dargestellt.
nzConnectDSN('NetezzaSQL')
nzInstallPackages("http://cran.r-project.org/src/contrib/bitops_1.0-4.1.tar.gz")
#Host:
#Installing: /nz/export/ae/workspace/nz/r_ae/bitops_1.0-4.1.tar.gz
#* installing to library '/nz/export/ae/languages/r/2.10/host/lib64/R/library'
#* installing *source* package 'bitops' ...
#** libs
#/nz/export/ae/sysroot/host/bin/i686-rhel4-linux-gnu-gcc -std=gnu99
#-I/nz/export/ae/languages/r/2.10/host/lib64/R/include -m32 -fpic -m32 -c
#bit-ops.c -o bit-ops.o
#/nz/export/ae/sysroot/host/bin/i686-rhel4-linux-gnu-gcc -std=gnu99
#-I/nz/export/ae/languages/r/2.10/host/lib64/R/include -m32 -fpic -m32 -c
#cksum.c -o cksum.o
#/nz/export/ae/sysroot/host/bin/i686-rhel4-linux-gnu-gcc -std=gnu99 -shared
#-m32 -L/nz/export/ae/sysroot/host/lib -L/nz/export/ae/sysroot/host/usr/lib
#-L/nz/export/ae/sysroot/host/lib -o bitops.so bit-ops.o cksum.o
#-L/nz/export/ae/languages/r/2.10/host/lib64/R/lib -
lR #** R
#** preparing package for lazy loading
#** help
#*** installing help indices
#** building package indices ...
#* DONE (bitops)
#SPUs:
#Installing: /nz/export/ae/workspace/nz/r_ae/bitops_1.0-4.1.tar.gz
#test: ==: binary operator expected
#test: ==: binary operator expected
#* installing to library /nz/export/ae/languages/r/2.10/spu/lib64/R/library #*
installing *source* package bitops ...
#** libs
#gcc -std=gnu99 -I/nz/export/ae/languages/r/2.10/spu/lib64/R/include -m32
#-fpic -m32 -c bit-ops.c -o bit-ops.o
#gcc -std=gnu99 -I/nz/export/ae/languages/r/2.10/spu/lib64/R/include -m32
#-fpic -m32 -c cksum.c -o cksum.o
#gcc -std=gnu99 -shared -m32 -L/nz/export/ae/sysroot/spu/lib
#-L/nz/export/ae/sysroot/spu/usr/lib -liconv -o bitops.so bit-ops.o cksum.o
#-L/nz/export/ae/languages/r/2.10/spu/lib64/R/lib -
lR #** R
#** preparing package for lazy loading
#** help
#*** installing help indices
#** building package indices ...
#* DONE (bitops)

To verify package installation, use nzIsPackageInstalled().
nzIsPackageInstalled(bitops)
# host spus
# TRUE TRUE
nzIsPackageInstalled(RODBC)
# host spus
# TRUE FALSE

Details zu

Die Funktion " nzInstallPackages() sendet das angegebene CRAN-Paket an Netezza und installiert dieses Paket.
  • Wenn der Wert des Parameters " pkg mit " http:// beginnt, wird angenommen, dass es sich um eine Webadresse handelt. Das Paket wird dann von der angegebenen URL heruntergeladen und an Netezza gesendet.
  • Wenn der Parameterwert " pkg eine lokale Datei ist, wird er an Netezza gesendet.
Nachdem die Datei gesendet wurde, wird sie auf dem Netezza installiert, was die Kompilierung des Fortran beinhaltet. Nach Abschluss der Installation und Kompilierung wird das Installationsprotokoll auf dem Bildschirm angezeigt.
Die Funktion " nzIsPackageInstalled() prüft, ob ein Paket auf dem Netezza und den SPUs installiert ist. Wenn das Paket auf dem Host oder den SPUs gefunden wird, wird eine Meldung auf dem Bildschirm angezeigt. Wenn das Paket an den angegebenen Orten gefunden wird, lautet der Rückgabewert " TRUE. Wird das Paket nicht an den angegebenen Orten gefunden, lautet der Rückgabewert " FALSE.
nzInstallPackages(pkg, installOnSpus = TRUE)
nzIsPackageInstalled(package)
Dabei gilt:
PKG
Gibt den lokalen Dateipfad oder eine Webadresse an; Webadressen müssen mit "http://" beginnen.
installOnSpus
Optional: Wenn ' FALSE, wird das Paket nicht auf SPUs installiert.
Paket
Gibt den Namen des zu prüfenden Pakets an.
Hinweis: Die Argumente werden mit den Funktionen " nzInstallPackages() und " nzIsPackageInstalled() verwendet.
Externe Pakete können sowohl auf dem Client als auch auf dem Server verwendet werden. Im folgenden Beispiel wird das externe Paket " gam, das von CRAN heruntergeladen wurde, verwendet, um ein GAM-Modell auf dem Client zu erstellen. Dieses Modell wird dann auf den Server hochgeladen und datenbankintern auf die Datensätze einer Netezza angewendet. Dieses Paket wird sowohl auf Netezza als auch auf den Client-Rechnern installiert und geladen und zum Erstellen des Modells " model1 verwendet. Die Funktion " pred, die dieses Paket verwendet, wird auf dem Netezza auf einen " nz.data.frame angewendet.
nzInstallPackages("http://cran.r-project.org/src/contrib/akima_0.5-4.tar.gz")
#(... output log from installation omitted for clarity)
nzInstallPackages("http://cran.r-project.org/src/contrib/gam_1.04.tar.gz")
#(... output log from installation omitted for clarity)
install.packages("gam")
library(gam)
library(nzr)
nzConnect("user","password","tt4-r040","nza")
#
# model is build in R locally on the client
#
model1 = gam(Sepal.Length~Petal.Length+Petal.Width, iris, family=gaussian)
nzIris = nz.data.frame("iris")
pred <- function(x, model1) {
require(gam)
predict(model1, data.frame(Petal.Length=as.numeric(x[[2]]),
Petal.Width=as.numeric(x[[3]])))
}
#
# then the model is applied to all rows in the database
#
nzApply(nzIris, FUN=pred, model1=model1)