다음을 통해 공유


세션 범위 패키지 관리

풀 수준 패키지 외에도 Notebook 세션의 시작 부분에 세션 범위 라이브러리를 지정할 수 있습니다. 세션 범위 라이브러리를 사용하면 Notebook 세션 내에서 Python, jar, R 패키지를 지정하고 사용할 수 있습니다.

세션 범위 라이브러리를 사용하는 경우 다음 사항을 염두에 두어야 합니다.

  • 세션 범위 라이브러리를 설치할 때 현재 Notebook만이 지정된 라이브러리에 액세스할 권한이 있습니다.
  • 이러한 라이브러리는 동일한 Spark 풀을 사용하는 다른 세션 또는 작업에 영향을 주지 않습니다.
  • 이러한 라이브러리는 기본 런타임 및 풀 수준 라이브러리 위에 설치되며 가장 높은 우선 순위를 차지합니다.
  • 세션 범위 라이브러리는 세션 간에 지속되지 않습니다.

세션 범위 Python 패키지

environment.yml 파일을 통해 세션 범위 Python 패키지 관리

세션 범위 Python 패키지를 지정하려면 다음을 수행합니다.

  1. 선택한 Spark 풀로 이동하여 세션 수준 라이브러리를 사용하도록 설정했는지 확인합니다. 관리>Apache Spark 풀>패키지탭으로 이동하여 이 설정을 사용할 수 있습니다. Screenshot of enabling session packages.
  2. 설정이 적용되면 Notebook을 열고 세션패키지 구성>을 선택할 수 있습니다. Screenshot of specifying session packages.Screenshot of uploading Yml file.
  3. 여기서 Conda environment.yml 파일을 업로드하여 세션 내에서 패키지를 설치하거나 업그레이드할 수 있습니다. 지정된 라이브러리는 세션이 시작되면 존재합니다. 이러한 라이브러리는 세션이 종료된 후에 더 이상 사용할 수 없습니다.

%pip%conda 명령을 통해 세션 범위 Python 패키지 관리

인기 있는 %pip%conda 명령을 사용하여 Apache Spark Notebook 세션 중에 추가 타사 라이브러리 또는 사용자 지정 라이브러리를 설치할 수 있습니다. 이 섹션에서는 %pip 명령을 사용하여 몇 가지 일반적인 시나리오를 보여 줍니다.

참고 항목

  • 새 라이브러리를 설치하려면 %pip%conda 명령을 Notebook의 첫 번째 셀에 배치하는 것이 좋습니다. 변경 내용을 적용하기 위해 세션 수준 라이브러리를 관리한 후 Python 인터프리터가 다시 시작됩니다.
  • 이러한 Python 라이브러리 관리 명령은 파이프라인 작업을 실행할 때 사용하지 않도록 설정됩니다. 파이프라인 내에 패키지를 설치하려면 풀 수준에서 라이브러리 관리 기능을 활용해야 합니다.
  • 세션 범위 Python 라이브러리는 드라이버와 작업자 노드 모두에 자동으로 설치됩니다.
  • 다음 %conda 명령은 지원되지 않습니다. create, clean, compare, activate, deactivate, run, package
  • 전체 명령 목록은 %pip 명령%conda 명령을 참조하면 됩니다.

타사 패키지 설치

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

# Install vega_datasets
%pip install altair vega_datasets

설치 결과를 확인하려면 다음 코드를 실행하여 vega_datasets 시각화

# Create a scatter plot
# Plot Miles per gallon against the horsepower across different region

import altair as alt
from vega_datasets import data

cars = data.cars()
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
).interactive()

스토리지 계정에서 휠 패키지 설치

스토리지에서 라이브러리를 설치하려면 다음 명령을 실행하여 스토리지 계정에 탑재해야 합니다.

from notebookutils import mssparkutils  
 
mssparkutils.fs.mount(  
    "abfss://<<file system>>@<<storage account>.dfs.core.windows.net",  
    "/<<path to wheel file>>",  
    {"linkedService":"<<storage name>>"}  
) 

그런 다음 % pip install 명령을 사용하여 필요한 휠 패키지를 설치할 수 있습니다.

%pip install /<<path to wheel file>>/<<wheel package name>>.whl

다른 버전의 기본 제공 라이브러리 설치

다음 명령을 사용하여 특정 패키지의 기본 제공 버전이 무엇인지 확인할 수 있습니다. 예를 들어 pandas를 사용합니다.

%pip show pandas

결과는 다음과 같은 로그입니다.

Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...

다음 명령을 사용하여 pandas를 다른 버전으로 전환할 수 있습니다. 1.2.4라고 가정해 보겠습니다.

%pip install pandas==1.2.4

세션 범위 라이브러리 제거

이 Notebook 세션에 설치된 패키지를 제거하려면 다음 명령을 참조하면 됩니다. 그러나 기본 제공 패키지는 제거할 수 없습니다.

%pip uninstall altair vega_datasets --yes

%pip 명령을 사용하여 requirement.txt 파일에서 라이브러리 설치

%pip install -r  /<<path to requirement file>>/requirements.txt

세션 범위 Java 또는 Scala 패키지

세션 범위 Java 또는 Scala 패키지를 지정하려면 %%configure 옵션을 사용할 수 있습니다.

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.windows.net/<<path to JAR file>>",
    }
}

참고 항목

  • Notebook의 시작 부분에서 %%configure를 실행하는 것이 좋습니다. 유효한 매개 변수의 전체 목록은 이 문서를 참조하세요.

세션 범위 R 패키지(미리 보기)

Azure Synapse Analytics 풀에는 즉시 사용 가능한 많은 인기 R 라이브러리가 포함되어 있습니다. Apache Spark Notebook 세션 중에 타사 라이브러리를 추가로 설치할 수도 있습니다.

참고 항목

  • 이러한 R 라이브러리 관리 명령은 파이프라인 작업을 실행할 때 사용하지 않도록 설정됩니다. 파이프라인 내에 패키지를 설치하려면 풀 수준에서 라이브러리 관리 기능을 활용해야 합니다.
  • 세션 범위 R 라이브러리는 드라이버와 작업자 노드 모두에 자동으로 설치됩니다.

패키지 설치

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

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

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

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

devtools를 사용하여 패키지 설치

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

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

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

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

# Install a GitHub library. 

install_github("jtilly/matchingR") 

현재 Azure Synapse Analytics 내에서 다음 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의 특정 버전에서 설치합니다.

설치된 라이브러리 보기

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

library()

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

packageVersion("caesar")

세션에서 R 패키지 제거

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

# detach a library

detach("package: caesar")

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

remove.packages("caesar")

참고 항목

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

세션 범위 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 <- "3.2"
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)

다음 단계