다음을 통해 공유


R 라이브러리 관리

라이브러리는 Microsoft Fabric Spark 프로그램 또는 프로젝트에 포함할 수 있는 재사용 가능한 코드를 제공합니다.

Microsoft Fabric은 TidyVerse를 비롯한 많은 인기 있는 오픈 소스 R 패키지가 사전 설치된 R 런타임을 지원합니다. Spark 인스턴스가 시작되면 이러한 라이브러리가 자동으로 포함되며 Notebook 또는 Spark 작업 정의에서 즉시 사용할 수 있습니다.

여러 가지 이유로 R 라이브러리를 업데이트해야 할 수 있습니다. 예를 들어 핵심 종속성 중 하나가 새 버전을 릴리스했거나, 팀에서 Spark 클러스터에서 사용할 수 있는 사용자 지정 패키지를 빌드했을 경우가 있습니다.

시나리오에 따라 포함할 수 있는 라이브러리에는 두 가지 유형이 있습니다.

  • 피드 라이브러리는 공개 원본 또는 리포지토리(예: CRAN 또는 GitHub)에 있는 라이브러리를 참조합니다.

  • 사용자 지정 라이브러리는 사용자 또는 사용자의 조직에서 빌드한 코드이며, .tar.gz 확장자는 라이브러리 관리 포털을 통해 관리할 수 있습니다.

Microsoft Fabric에는 두 가지 수준의 패키지가 설치되어 있습니다.

  • 환경: 환경을 통해 라이브러리를 관리하여 여러 Notebook 또는 작업에서 동일한 라이브러리 세트를 다시 사용합니다.

  • 세션: 세션 수준 설치는 특정 Notebook 세션에 대한 환경을 만듭니다. 세션 수준 라이브러리의 변경 내용은 세션 간에 유지되지 않습니다.

현재 사용 가능한 R 라이브러리 관리 동작 요약:

라이브러리 유형 환경 설치 세션 수준 설치
R 피드(CRAN) 지원되지 않음 지원 여부
R 사용자 지정 지원됨 지원됨

필수 조건

세션 수준 R 라이브러리

대화형 데이터 분석이나 기계 학습을 수행하는 경우에는 최신 패키지를 시도하거나 작업 영역에서 현재 사용할 수 없는 패키지가 필요할 수 있습니다. 작업 영역 설정을 업데이트하는 대신 세션 범위 패키지를 사용하여 세션 종속성을 추가, 관리, 업데이트할 수 있습니다.

  • 세션 범위 라이브러리를 설치할 때 현재 Notebook만이 지정된 라이브러리에 액세스할 권한이 있습니다.
  • 해당 라이브러리는 동일한 Spark 풀을 사용하는 다른 세션이나 작업에 영향을 미치지 않습니다.
  • 이러한 라이브러리는 기본 런타임 및 풀 수준 라이브러리 위에 설치됩니다.
  • Notebook 라이브러리의 우선 순위가 가장 높습니다.
  • 세션 범위 R 라이브러리는 세션 간에 지속되지 않습니다. 해당 라이브러리는 관련 설치 명령이 실행될 때 각 세션이 시작될 때 설치됩니다.
  • 세션 범위 R 라이브러리는 드라이버와 작업자 노드 모두에 자동으로 설치됩니다.

참고 항목

R 라이브러리 관리 명령은 파이프라인 작업을 실행할 때 사용하지 않도록 설정됩니다. 파이프라인 내에 패키지를 설치하려면 작업 영역 수준에서 라이브러리 관리 기능을 사용해야 합니다.

CRAN에서 R 패키지 설치

CRAN에서 R 라이브러리를 쉽게 설치할 수 있습니다.

# install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

또한 CRAN 스냅샷을 리포지토리로 사용하여 매번 동일한 패키지 버전이 다운로드되도록 할 수 있습니다.

# install a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

devtools를 사용하여 R 패키지 설치

devtools 라이브러리는 패키지 개발을 단순화하여 일반적인 작업을 신속하게 처리합니다. 이 라이브러리는 기본 Microsoft Fabric 런타임 내에 설치됩니다.

devtools를 사용하여 설치할 라이브러리의 특정 버전을 지정할 수 있습니다. 이러한 라이브러리는 클러스터 내의 모든 노드에 설치됩니다.

# Install a specific version. 
install_version("caesar", version = "1.0.0")

마찬가지로 GitHub에서 직접 라이브러리를 설치할 수 있습니다.

# Install a GitHub library. 

install_github("jtilly/matchingR")

현재 Microsoft Fabric 내에서 다음과 같은 devtools 함수가 지원됩니다.

명령 설명
install_github() GitHub에서 R 패키지를 설치합니다.
install_gitlab() GitLab에서 R 패키지를 설치합니다.
install_bitbucket() BitBucket에서 R 패키지를 설치합니다.
install_url() 임의의 URL에서 R 패키지를 설치합니다.
install_git() 임의의 git 리포지토리에서 설치합니다.
install_local() 디스크의 로컬 파일에서 설치합니다.
install_version() CRAN의 특정 버전에서 설치합니다.

R 사용자 지정 라이브러리 설치

세션 수준 사용자 지정 라이브러리를 사용하려면 먼저 연결된 레이크하우스에 업로드해야 합니다.

  1. 왼쪽에서 추가를 선택하여 기존 레이크하우스를 추가하거나 레이크하우스를 만듭니다.

    Notebook에 레이크하우스를 추가하는 방법의 스크린샷.

  2. 이 레이크하우스에 파일을 추가하려면 작업 영역을 선택한 다음, 레이크하우스를 선택합니다.

    파일을 추가하기 위해 레이크하우스로 이동하는 방법의 스크린샷.

  3. 마우스 오른쪽 버튼을 클릭하거나 파일 옆에 있는 "..."을 선택하여 .tar.gz 파일을 업로드할 수 있습니다.

    레이크하우스 파일 폴더에 파일을 업로드하는 방법의 스크린샷.

  4. 업로드한 후 Notebook으로 돌아갑니다. 다음 명령을 사용하여 세션에 사용자 지정 라이브러리를 설치합니다.

    install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
    

설치된 라이브러리 보기

library 명령을 사용하여 세션 내에 설치된 모든 라이브러리를 쿼리할 수 있습니다.

# query all the libraries installed in current session
library()

packageVersion 함수를 사용하여 라이브러리 버전을 확인할 수 있습니다.

# check the package version
packageVersion("caesar")

세션에서 R 패키지 제거

detach 함수를 사용하여 네임스페이스에서 라이브러리를 제거할 수 있습니다. 이러한 라이브러리는 다시 로드될 때까지 디스크에 남아 있습니다.

# detach a library

detach("package: caesar")

Notebook에서 세션 범위 패키지를 제거하려면 remove.packages() 명령을 사용합니다. 이 라이브러리 변경은 동일한 클러스터의 다른 세션에 영향을 주지 않습니다. 사용자는 기본 Azure Synapse Analytics 런타임의 기본 제공 라이브러리를 설치 제거하거나 제거할 수 없습니다.

참고 항목

SparkR, SparklyR 또는 R과 같은 핵심 패키지는 제거할 수 없습니다.

remove.packages("caesar")

세션 범위 R 라이브러리 및 SparkR

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

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

세션 범위 R 라이브러리 및 sparklyr

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

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

R 기능에 대해 자세히 알아보기: