Compartilhar via


Gerenciar pacotes no escopo da sessão

Além dos pacotes de nível de pool, você também pode especificar bibliotecas no escopo da sessão no início de uma sessão de notebook. As bibliotecas com escopo de sessão permitem especificar e usar pacotes Python, JAR e R em uma sessão de notebook.

Ao usar bibliotecas com escopo de sessão, é importante considerar o seguinte:

  • Quando você instala bibliotecas com escopo de sessão, somente o notebook atual tem acesso às bibliotecas especificadas.
  • Essas bibliotecas não afetarão outras sessões ou trabalhos que usam o mesmo pool do Spark.
  • Essas bibliotecas são instaladas com base nas bibliotecas no nível do pool e do runtime base e têm a precedência mais alta.
  • As bibliotecas com escopo de sessão não persistem entre sessões.

Pacotes Python no escopo da sessão

Gerenciar pacotes do Python com escopo de sessão por meio do arquivo environment.yml

Para especificar pacotes Python no escopo da sessão:

  1. Navegue até o pool do Spark selecionado e verifique se você habilitou as bibliotecas no nível da sessão. Você pode habilitar essa configuração navegando até a guia Gerenciar>Pools do Apache Spark>Pacotes. Captura de tela de Habilitar pacotes de sessão.
  2. Depois que a configuração for aplicada, você poderá abrir um notebook e selecionar Configurar sessão>Pacotes. Captura de tela de Especificar pacotes de sessão. Captura de tela de Carregar arquivo Yml.
  3. Aqui, você pode carregar um arquivo Conda environment.yml para instalar ou atualizar pacotes em uma sessão. As bibliotecas especificadas estão presentes quando a sessão é iniciada. Essas bibliotecas não estarão mais disponíveis após o término da sessão.

Gerenciar pacotes Python com escopo de sessão por meio de comandos %pip e %conda

Você pode usar os comandos %pip e %conda populares para instalar bibliotecas adicionais de terceiros ou bibliotecas personalizadas durante a sessão de notebook do Apache Spark. Nesta seção, usamos os comandos %pip para demonstrar vários cenários comuns.

Observação

  • Recomendamos que você coloque os comandos %pip e %conda na primeira célula do notebook se quiser instalar novas bibliotecas. O interpretador do Python será reiniciado depois que a biblioteca no nível da sessão for gerenciada para colocar as alterações em vigor.
  • Esses comandos de gerenciamento de bibliotecas Python serão desabilitados durante a execução de trabalhos de pipeline. Se você quiser instalar um pacote em um pipeline, deverá aproveitar os recursos de gerenciamento de biblioteca no nível do pool.
  • As bibliotecas Python com escopo de sessão são instaladas automaticamente nos nós de driver e de trabalho.
  • Não há suporte para os seguintes comandos %conda : criar, limpar, comparar, ativar, desativar, executar, empacotar.
  • Você pode consultar os comandos %pip e os comandos %conda para obter a lista completa de comandos disponíveis.

Instalar um pacote de terceiros

Você pode instalar facilmente uma biblioteca Python por meio do PyPI.

# Install vega_datasets
%pip install altair vega_datasets

Para verificar o resultado da instalação, você pode executar o código a seguir para visualizar 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()

Instalar um pacote wheel por meio da conta de armazenamento

Para instalar a biblioteca por meio do armazenamento, você precisa fazer na montagem na conta de armazenamento executando os comandos a seguir.

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

Depois, você pode usar o comando %pip install para instalar o pacote wheel necessário

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

Instalar outra versão da biblioteca interna

Você pode usar o comando a seguir para ver qual é a versão interna de determinado pacote. Usamos o Pandas como exemplo

%pip show pandas

O resultado é o seguinte log:

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

Você pode usar o comando a seguir para alternar o pandas para outra versão, como a 1.2.4

%pip install pandas==1.2.4

Desinstalar uma biblioteca com escopo de sessão

Se você quiser desinstalar um pacote que esteja instalado nesta sessão do notebook, confira os comandos a seguir. No entanto, não é possível desinstalar os pacotes internos.

%pip uninstall altair vega_datasets --yes

Usando o comando %pip para instalar bibliotecas de um arquivo requirement.txt

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

Pacotes Java ou Scala no escopo da sessão

Para especificar pacotes Java ou Scala com escopo de sessão, você pode usar a opção %%configure:

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

Observação

  • Recomendamos que você execute o %%configure no início do notebook. Você pode consultar este documento para obter a lista completa de parâmetros válidos.

Pacotes R no escopo da sessão (versão prévia)

Os pools do Azure Synapse Analytics incluem muitas bibliotecas populares do R prontas para uso. Você também pode instalar bibliotecas adicionais de terceiros durante a sessão de notebook do Apache Spark.

Observação

  • Esses comandos de gerenciamento de bibliotecas R serão desabilitados durante a execução de trabalhos de pipeline. Se você quiser instalar um pacote em um pipeline, deverá aproveitar os recursos de gerenciamento de biblioteca no nível do pool.
  • As bibliotecas R com escopo de sessão são instaladas automaticamente nos nós de driver e de trabalho.

Instalar um pacote

Você pode instalar facilmente uma biblioteca R no CRAN.

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

Você também pode usar instantâneos CRAN como o repositório para garantir que a mesma versão do pacote sempre seja baixada.

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

Usando devtools para instalar pacotes

A biblioteca devtools simplifica o desenvolvimento de pacotes para agilizar tarefas comuns. Essa biblioteca é instalada dentro do runtime padrão do Azure Synapse Analytics.

Você pode usar devtools para especificar uma versão específica de uma biblioteca a ser instalada. Essas bibliotecas serão instaladas em todos os nós dentro do cluster.

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

Da mesma forma, você pode instalar uma biblioteca diretamente do GitHub.

# Install a GitHub library. 

install_github("jtilly/matchingR") 

Atualmente, há suporte para as seguintes funções devtools no Azure Synapse Analytics:

Comando Descrição
install_github() Instala um pacote R do GitHub
install_gitlab() Instala um pacote R do GitLab
install_bitbucket() Instala um pacote R do Bitbucket
install_url() Instala um pacote R de uma URL arbitrária
install_git() Instala de um repositório git arbitrário
install_local() Instala de um arquivo local no disco
install_version() Instala de uma versão específica no CRAN

Exibição de bibliotecas instaladas

Você pode consultar todas as bibliotecas instaladas em sua sessão usando o comando library.

library()

Você pode usar a função packageVersion para verificar a versão da biblioteca:

packageVersion("caesar")

Remoção de um pacote R de uma sessão

Você pode usar a função detach para remover uma biblioteca do namespace. Essas bibliotecas permanecerão no disco até serem carregadas novamente.

# detach a library

detach("package: caesar")

Para remover um pacote no escopo de sessão de um notebook, use o comando remove.packages(). Essa alteração de biblioteca não afeta outras sessões no mesmo cluster. Os usuários não podem desinstalar nem remover as bibliotecas internas do runtime padrão do Azure Synapse Analytics.

remove.packages("caesar")

Observação

Não é possível remover pacotes principais como SparkR, SparklyR ou R.

Bibliotecas do R no escopo de sessão e SparkR

As bibliotecas no escopo de notebook estão disponíveis em funções de trabalhos do 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)

Bibliotecas do R no escopo de sessão e SparklyR

Com spark_apply() no SparklyR, você pode usar qualquer pacote R dentro do Spark. Por padrão, em sparklyr::spark_apply(), o argumento de pacotes é definido como FALSE. Isso copia bibliotecas no libPaths atual para as funções de trabalho, permitindo importá-las e usá-las em funções de trabalho. Por exemplo, você pode executar a seguinte instrução para gerar uma mensagem criptografada por Caesar com sparklyr::spark_apply():

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)

Próximas etapas