CRAN

Il Comprehensive R Archive Network (CRAN) è una rete di server sparsi in tutto il mondo che " storeR " distribuzioni, estensioni, documentazione e file binari. La maggior parte dei server mirror sono ospitati nelle università di tutto il mondo, creando una comunità attiva e open source. Il repository è ampiamente utilizzato dalla comunità R, grazie al gran numero di pacchetti aggiuntivi, generalmente disponibili sotto licenza GPL. Gli utenti possono sfruttare il repository CRAN e scaricare i pacchetti scelti, ma devono considerare che questi pacchetti sono completamente esterni a Netezza.

I pacchetti CRAN possono essere installati su Netezza. Il pacchetto di librerie Netezza R fornisce strumenti per l'installazione e la gestione dei pacchetti CRAN.

nzInstallPackages, nzIsPackageInstalled

Per installare un pacchetto, utilizzare 'nzInstallPackages(). Si noti che sia sull'host che sulle SPU il processo di installazione in due fasi è quello predefinito. L'output della funzione (registro di installazione) per un'installazione di successo di un pacchetto è presentato nell'esempio seguente.
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

Dettagli

La funzione 'nzInstallPackages() invia a Netezza il pacchetto CRAN specificato e lo installa.
  • Se il valore del parametro 'pkg inizia con 'http://, si presume che sia un indirizzo web. Il pacchetto viene quindi scaricato dall' URL specificato e inviato a Netezza.
  • Se il valore del parametro 'pkg è un file locale, viene inviato a Netezza.
Dopo l'invio del file, questo viene installato sul sistema Netezza, il che comporta la compilazione del codice Fortran. Al termine dell'installazione e della compilazione, sullo schermo viene visualizzato il registro di installazione.
La funzione 'nzIsPackageInstalled() controlla se un pacchetto è installato sull'host Netezza e sulle SPU. Se il pacchetto viene trovato sull'host o sulle SPU, viene visualizzato un messaggio sullo schermo. Se il pacchetto viene trovato nelle posizioni specificate, il valore restituito è 'TRUE. Se il pacchetto non viene trovato nelle posizioni specificate, il valore restituito è 'FALSE.
nzInstallPackages(pkg, installOnSpus = TRUE)
nzIsPackageInstalled(package)
dove:
pkg
Specifica il percorso del file locale o un indirizzo web; gli indirizzi web devono iniziare conhttp://.
installOnSpus
Facoltativo. Quando 'FALSE, il pacchetto non è installato sulle SPU.
pacchetto
Specifica il nome del pacchetto da controllare.
Nota: gli argomenti vengono utilizzati con le funzioni 'nzInstallPackages() e 'nzIsPackageInstalled().
I pacchetti esterni possono essere utilizzati sia sul client che sul server. Nell'esempio seguente, il pacchetto esterno " gam, scaricato da CRAN, viene utilizzato per costruire un modello GAM sul client. Questo modello viene poi caricato sul server e applicato nel database ai record di una tabella Netezza. Questo pacchetto viene installato e caricato sia su Netezza che sui computer client e viene utilizzato per costruire il modello 'model1. La funzione 'pred, che utilizza questo pacchetto, viene applicata sul sistema Netezza a un 'nz.data.frame.
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)