Cran

Le Comprehensive R Archive Network (CRAN) est un réseau de serveurs répartis dans le monde entier qui " storeR des distributions, des extensions, de la documentation et des binaires. La plupart des serveurs miroirs sont hébergés dans des universités du monde entier, créant ainsi une communauté active et ouverte. Le dépôt est largement utilisé par la communauté R, en raison du grand nombre de paquets complémentaires, qui sont généralement disponibles sous licence GPL. Les utilisateurs peuvent profiter du dépôt CRAN et télécharger les paquets choisis, mais ils doivent tenir compte du fait que ces paquets sont complètement externes à Netezza.

Les paquets CRAN peuvent être installés sur Netezza. La bibliothèque Netezza R fournit des outils pour l'installation et la gestion des paquets CRAN.

nzInstallPackages, nzIsPackageInstalled

Pour installer un paquet, utilisez 'nzInstallPackages(). Notez que sur l'hôte et les SPU, une procédure d'installation en deux étapes est proposée par défaut. La sortie de la fonction (journal d'installation) pour une installation réussie d'un paquet est présentée dans l'exemple suivant.
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

Détails

La fonction 'nzInstallPackages() envoie le paquet CRAN spécifié à Netezza et installe ce paquet.
  • Si la valeur du paramètre " pkg commence par " http://, on suppose qu'il s'agit d'une adresse web. Le paquet est ensuite téléchargé à partir du site URL spécifié et envoyé à Netezza.
  • Si la valeur du paramètre " pkg est un fichier local, elle est envoyée à Netezza.
Une fois le fichier envoyé, il est installé sur le système Netezza, ce qui implique la compilation du code Fortran. Une fois l'installation et la compilation terminées, le journal d'installation s'affiche à l'écran.
La fonction 'nzIsPackageInstalled() vérifie si un package est installé sur le Netezza Host et les SPU. Si le paquet est trouvé sur l'hôte ou les SPU, un message s'affiche à l'écran. Si le paquet est trouvé dans les emplacements spécifiés, la valeur de retour est " TRUE. Si le paquet n'est pas trouvé dans les emplacements spécifiés, la valeur de retour est " FALSE.
nzInstallPackages(pkg, installOnSpus = TRUE)
nzIsPackageInstalled(package)
Où :
pkg
Spécifie le chemin d'accès au fichier local ou une adresse web ; les adresses web doivent commencer parhttp://.
installOnSpus
Facultatif. Si 'FALSE, le paquet n'est pas installé sur les SPU.
module
Spécifie le nom du paquet à vérifier.
Note : Les arguments sont utilisés avec les fonctions " nzInstallPackages() et " nzIsPackageInstalled()
Les paquets externes peuvent être utilisés sur le client et sur le serveur. Dans l'exemple suivant, le paquet externe " gam, téléchargé depuis le CRAN, est utilisé pour construire un modèle GAM sur le client. Ce modèle est ensuite téléchargé sur le serveur et appliqué dans la base de données aux enregistrements d'une table Netezza. Ce paquet est installé et chargé à la fois sur Netezza et sur les machines clientes, et est utilisé pour construire le modèle 'model1'. La fonction " pred, qui utilise ce paquet, est appliquée sur le système Netezza à 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)