CRAN

A Comprehensive R Archive Network (CRAN) é uma rede de servidores em todo o mundo que distribui ' storeR, extensões, documentação e binários. A maioria dos servidores espelho está hospedada em universidades de todo o mundo, criando uma comunidade ativa e de código aberto. O repositório é amplamente usado pela comunidade R, devido ao grande número de pacotes complementares, que geralmente estão disponíveis sob a licença GPL. Os usuários podem aproveitar o repositório CRAN e fazer o download dos pacotes escolhidos, mas devem considerar que esses pacotes são completamente externos à Netezza.

Os pacotes CRAN podem ser instalados no Netezza. O pacote da biblioteca Netezza R fornece ferramentas para instalar e gerenciar pacotes CRAN.

nzInstallPackages, nzIsPackageInstalled

Para instalar um pacote, use ' nzInstallPackages(). Observe que, tanto no host quanto nas SPUs, o processo de instalação em duas etapas é o padrão. A saída da função (registro de instalação) para uma instalação bem-sucedida de um pacote é apresentada no exemplo a seguir.
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

Detalhes

A função ' nzInstallPackages() envia o pacote CRAN especificado para a Netezza e instala esse pacote.
  • Se o valor do parâmetro " pkg começar com " http://, presume-se que seja um endereço da Web. O pacote é então baixado da URL especificada e enviado para a Netezza.
  • Se o valor do parâmetro ' pkg for um arquivo local, ele será enviado para a Netezza.
Depois que o arquivo é enviado, ele é instalado no sistema Netezza, o que envolve a compilação do código Fortran. Após a conclusão da instalação e da compilação, o registro de instalação é exibido na tela.
A função ' nzIsPackageInstalled() verifica se um pacote está instalado no Netezza Host e nas SPUs. Se o pacote for encontrado no host ou nas SPUs, uma mensagem será exibida na tela. Se o pacote for encontrado nos locais especificados, o valor de retorno será ' TRUE. Se o pacote não for encontrado nos locais especificados, o valor de retorno será ' FALSE.
nzInstallPackages(pkg, installOnSpus = TRUE)
nzIsPackageInstalled(package)
Em que:
pkg
Especifica o caminho do arquivo local ou um endereço da Web; os endereços da Web devem começar comhttp://
installOnSpus
Opcional. Quando ' FALSE, o pacote não está instalado nas SPUs.
pacote
Especifica o nome do pacote a ser verificado.
Observação: Os argumentos são usados com as funções " nzInstallPackages() e " nzIsPackageInstalled().
Os pacotes externos podem ser usados no cliente e no servidor. No exemplo a seguir, o pacote externo " gam, que foi baixado do CRAN, é usado para criar um modelo GAM no cliente. Esse modelo é então carregado no servidor e aplicado no banco de dados aos registros de uma tabela Netezza. Esse pacote é instalado e carregado tanto na Netezza quanto nas máquinas clientes e é usado para criar o modelo ' model1. A função ' pred, que usa esse pacote, é aplicada no sistema Netezza a um ' 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)