Partilhar via


Gerenciar pacotes com escopo de sessão

Além dos pacotes no nível do pool, você também pode especificar bibliotecas com escopo de sessão no início de uma sessão de bloco de anotações. As bibliotecas com escopo de sessão permitem especificar e usar pacotes Python, jar e R em uma sessão de bloco de anotações.

Ao usar bibliotecas com escopo de sessão, é importante ter em mente os seguintes pontos:

  • Quando você instala bibliotecas com escopo de sessão, somente o bloco de anotações atual tem acesso às bibliotecas especificadas.
  • Essas bibliotecas não têm impacto em outras sessões ou trabalhos que usam o mesmo pool do Spark.
  • Essas bibliotecas são instaladas sobre o tempo de execução básico e as bibliotecas de nível de pool e têm a maior precedência.
  • As bibliotecas com escopo de sessão não persistem entre as sessões.

Pacotes Python com escopo de sessão

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

Para especificar pacotes Python com escopo de 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>pacotes do pool>do Apache Spark.Captura de ecrã a mostrar a ativação de pacotes de sessão.
  2. Quando a configuração se aplicar, você poderá abrir um bloco de anotações e selecionar Configurar Pacotes de Sessão>. Captura de tela da especificação de pacotes de sessão. Screenshot do carregamento do ficheiro Yml.
  3. Aqui, você pode carregar um arquivo Conda environment.yml para instalar ou atualizar pacotes dentro de 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.

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

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

Nota

  • Recomendamos colocar os comandos %pip e %conda na primeira célula do seu bloco de anotações se quiser instalar novas bibliotecas. O interpretador Python será reiniciado após a biblioteca de nível de sessão ser gerenciada para efetivar as alterações.
  • Esses comandos de gerenciamento de bibliotecas Python serão desativados ao executar trabalhos de pipeline. Se quiser instalar um pacote dentro de um pipeline, aproveite 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.
  • Os seguintes comandos %conda não são suportados: create, clean, compare, activate, deactivate, run, package.
  • Você pode consultar os comandos %pip e %conda para obter a lista completa de comandos.

Instalar um pacote de terceiros

Você pode instalar facilmente uma biblioteca Python a partir 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 de roda a partir da conta de armazenamento

Para instalar a biblioteca a partir do armazenamento, você precisa montar em sua conta de armazenamento executando os seguintes comandos.

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

E então, 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 integrada

Você pode usar o seguinte comando para ver qual é a versão interna de determinado pacote. Usamos os 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 seguinte comando para alternar pandaspara outra versão, digamos 1.2.4

%pip install pandas==1.2.4

Desinstalar uma biblioteca com escopo de sessão

Se você quiser desinstalar um pacote, que instalado nesta sessão de bloco de anotações, você pode consultar os seguintes comandos. No entanto, não é possível desinstalar os pacotes internos.

%pip uninstall altair vega_datasets --yes

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

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

Pacotes Java ou Scala com escopo de sessão

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

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

Nota

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

Pacotes R com escopo de sessão (Visualização)

Os pools do Azure Synapse Analytics incluem muitas bibliotecas R populares prontas para uso. Você também pode instalar bibliotecas extras de terceiros durante a sessão do seu bloco de anotações Apache Spark.

Nota

  • Esses comandos de gerenciamento de bibliotecas R serão desabilitados ao executar trabalhos de pipeline. Se quiser instalar um pacote dentro de um pipeline, aproveite 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 facilmente instalar uma biblioteca R a partir do CRAN.

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

Você também pode usar instantâneos de CRAN como o repositório para garantir o download da mesma versão do pacote todas as vezes.

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

Usando devtools para instalar pacotes

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

Você pode usar devtools para especificar uma versão específica de uma biblioteca para instalar. 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, as seguintes devtools funções são suportadas no Azure Synapse Analytics:

Comando Description
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 a partir de um URL arbitrário
install_git() Instala a partir de um repositório git arbitrário
install_local() Instala a partir de um arquivo local no disco
install_version() Instala a partir de uma versão específica na CRAN

Ver bibliotecas instaladas

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

library()

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

packageVersion("caesar")

Remover um pacote R de uma sessão

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

# detach a library

detach("package: caesar")

Para remover um pacote com escopo de sessão de um bloco de anotações, use o remove.packages() comando. Essa alteração de biblioteca não tem impacto em outras sessões no mesmo cluster. Os usuários não podem desinstalar ou remover bibliotecas internas do tempo de execução padrão do Azure Synapse Analytics.

remove.packages("caesar")

Nota

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

Bibliotecas R com escopo de sessão e SparkR

As bibliotecas com escopo de notebook estão disponíveis nos trabalhadores 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 R com 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 packages é definido como FALSE. Isso copia bibliotecas no libPaths atual para os trabalhadores, permitindo que você as importe e use em trabalhadores. Por exemplo, você pode executar o seguinte para gerar uma mensagem criptografada por césar 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óximos passos