CRAN
CRAN(Comprehensive R Archive Network)은 배포판, 확장 프로그램, 문서 및 바이너리를 ' storeR '하는 전 세계 서버 네트워크입니다. 대부분의 미러 서버는 전 세계 대학에서 호스팅되어 활발한 오픈 소스 커뮤니티를 형성하고 있습니다. 리포지토리는 일반적으로 GPL 라이선스에 따라 제공되는 수많은 애드온 패키지로 인해 R 커뮤니티에서 광범위하게 사용되고 있습니다. 사용자는 CRAN 저장소를 활용하여 선택한 패키지를 다운로드할 수 있지만, 이러한 패키지는 Netezza 완전히 외부에 있다는 점을 고려해야 합니다.
CRAN 패키지는 Netezza 설치할 수 있습니다. Netezza R 라이브러리 패키지는 CRAN 패키지 설치 및 관리를 위한 도구를 제공합니다.
nzInstallPackages, nzIsPackageInstalled
패키지를 설치하려면 ' nzInstallPackages() 을 사용합니다. 호스트와 SPU 모두에서 2단계 설치 프로세스가 기본값입니다. 패키지를 성공적으로 설치한 경우의 함수 출력(설치 로그)은 다음 예제에 나와 있습니다.
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세부사항
' nzInstallPackages() ' 함수는 지정된 CRAN 패키지를 Netezza 전송하고 이 패키지를 설치합니다.
- ' pkg 매개변수 값이 '
http://'로 시작하면 웹 주소로 간주합니다. 그런 다음 지정된 URL 패키지를 다운로드하여 Netezza 전송합니다. - ' pkg 매개변수 값이 로컬 파일인 경우, 이 값은 Netezza 전송됩니다.
' nzIsPackageInstalled() ' 함수는 Netezza 호스트와 SPU에 패키지가 설치되어 있는지 확인합니다. 호스트 또는 SPU에서 패키지가 발견되면 화면에 메시지가 표시됩니다. 지정된 위치에서 패키지가 발견되면 반환 값은 '
TRUE 입니다. 지정된 위치에서 패키지를 찾을 수 없는 경우 반환 값은 ' FALSE 입니다.nzInstallPackages(pkg, installOnSpus = TRUE)
nzIsPackageInstalled(package)여기서,- 패키지
- 로컬 파일 경로 또는 웹 주소를 지정합니다(웹 주소는http://로 시작해야 함).
- installOnSpus
- 선택사항. '
FALSE경우 패키지가 SPU에 설치되지 않습니다. - 패키지
- 확인할 패키지의 이름을 지정합니다.
참고: 인수는 ' nzInstallPackages() ' 및 ' nzIsPackageInstalled() ' 함수와 함께 사용됩니다.
외부 패키지는 클라이언트와 서버에서 사용할 수 있습니다. 다음 예시에서는 CRAN에서 다운로드한 외부 '
gam ' 패키지를 사용하여 클라이언트에서 GAM 모델을 빌드합니다. 그런 다음 이 모델을 서버에 업로드하고 데이터베이스 내에서 Netezza 테이블의 레코드에 적용합니다. 이 패키지는 Netezza 클라이언트 머신 모두에 설치 및 로드되며, ' model1 모델을 빌드하는 데 사용됩니다. 이 패키지를 사용하는 ' pred 함수는 Netezza 시스템에서 ' 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)