Notebook 범위의 R 라이브러리

Notebook 범위 R 라이브러리를 사용하면 Notebook 세션과 관련된 사용자 지정 R 환경을 만들고 수정할 수 있습니다. R Notebook 범위 라이브러리를 설치하면 현재 Notebook 및 해당 Notebook과 연결된 모든 작업만 해당 라이브러리에 액세스할 수 있습니다. 동일한 클러스터에 연결된 다른 Notebooks는 영향을 받지 않습니다.

Notebook 범위 라이브러리는 세션 간에 지속되지 않습니다. 각 세션이 시작될 때 또는 Notebook이 클러스터에서 분리될 때마다 Notebook 범위 라이브러리를 다시 설치해야 합니다.

Notebook 범위 라이브러리 라이브러리는 SparkR UDF용 작업자에서 자동으로 사용할 수 있습니다.

클러스터에 연결된 모든 Notebook에 대한 라이브러리를 설치하려면 클러스터 설치 라이브러리를 사용합니다. 클러스터 라이브러리를 참조하세요.

R에 Notebook 범위 라이브러리 설치

install.packages(), devtools API 또는 Bioconductor와 같이 R에서 패키지를 설치하는 익숙한 방법을 사용할 수 있습니다.

R 패키지는 드라이버 노드뿐만 아니라 작업자 노드에서도 액세스할 수 있습니다.

R에서 Notebook 범위 라이브러리 관리

이 섹션의 내용:

패키지 설치

require(devtools)

install_version(
  package = "caesar",
  repos   = "http://cran.us.r-project.org"
)

Databricks는 재현 가능한 결과를 보장하기 위해 CRAN 스냅샷을 리포지토리로 사용할 것을 권장합니다.

devtools::install_github("klutometis/roxygen")

Notebook 환경에서 R 패키지 제거

Notebook에서 Notebook 범위 라이브러리를 제거하려면 remove.packages() 명령을 사용합니다.

remove.packages("caesar")

Spark UDF가 있는 Notebook 범위 R 라이브러리

이 섹션의 내용:

Notebook 범위 R 라이브러리 및 SparkR

Notebook 범위 라이브러리는 SparkR 작업자에서 사용할 수 있습니다. 라이브러리를 가져와 사용하기만 하면 됩니다. 예를 들어 다음을 실행하여 SparkR UDF로 Caesar 암호화 메시지를 생성할 수 있습니다.

require(devtools)

install_version(
  package = "caesar",
  repos   = "http://cran.us.r-project.org"
)

library(SparkR)
sparkR.session()

hello <- function(x) {
  library(caesar)
  caesar("hello world")
}

spark.lapply(c(1, 2), hello)

Notebook 범위 R 라이브러리 및 sparklyr

기본적으로 sparklyr::spark_apply()에서 packages 인수는 TRUE로 설정됩니다. 이렇게 하면 현재 libPaths의 라이브러리가 작업자에 복사되어 작업자에서 라이브러리를 가져와 사용할 수 있습니다. 예를 들어 다음을 실행하여 sparklyr::spark_apply()를 사용하여 Caesar 암호화 메시지를 생성할 수 있습니다.

require(devtools)

install_version(
  package = "caesar",
  repos   = "http://cran.us.r-project.org"
)

library(sparklyr)
sc <- spark_connect(method = 'databricks')

apply_caes <- function(x) {
  library(caesar)
  caesar("hello world")
}

sdf_len(sc, 5) %>%
  spark_apply(apply_caes)

작업자에서 라이브러리를 사용하지 않으려면 packagesFALSE로 설정합니다.

라이브러리 격리 및 호스팅된 RStudio

RStudio는 각 사용자에 대해 별도의 라이브러리 경로를 만듭니다. 따라서 사용자는 서로 격리됩니다. 그러나 작업자에서는 라이브러리 경로를 사용할 수 없습니다. RStudio에서 시작된 작업에서 SparkR 작업자 내에서 패키지를 사용하려면 클러스터 라이브러리를 사용하여 패키지를 설치해야 합니다.

또는 sparklyr UDF를 사용하는 경우 spark_apply(..., packages = TRUE)를 사용할 때 작업자가 RStudio 내부에 설치된 패키지를 사용할 수 있습니다.

질문과 대답(FAQ)

모든 R Notebooks의 드라이버에만 패키지를 설치하려면 어떻게 해야 하나요?

설치 디렉터리를 /databricks/spark/R/lib로 명시적으로 설정합니다. 예를 들어, install.packages()install.packages("pckg", lib="/databricks/spark/R/lib")를 실행합니다. /databricks/spark/R/lib에 설치된 패키지는 클러스터의 모든 Notebooks에서 공유되지만 SparkR 작업자는 액세스할 수 없습니다. Notebook 및 작업자 간에 라이브러리를 공유하려면 클러스터 라이브러리를 사용합니다.

Notebook 범위 라이브러리가 캐시되나요?

클러스터의 Notebook 범위 라이브러리에 대해 구현된 캐싱이 없습니다. Notebook에 패키지를 설치하고 다른 사용자가 동일한 클러스터의 다른 Notebook에 동일한 패키지를 설치하면 패키지가 다시 다운로드, 컴파일 및 설치됩니다.