Gerir pacotes com âmbito de sessão

Além dos pacotes ao nível do conjunto, também pode especificar bibliotecas com âmbito de sessão no início de uma sessão de bloco de notas. As bibliotecas com âmbito de sessão permitem-lhe especificar e utilizar pacotes Python, jar e R numa sessão de bloco de notas.

Ao utilizar bibliotecas com âmbito de sessão, é importante ter em mente os seguintes pontos:

  • Quando instala bibliotecas com âmbito de sessão, apenas o bloco de notas atual tem acesso às bibliotecas especificadas.
  • Estas bibliotecas não afetam outras sessões ou tarefas que utilizem o mesmo conjunto do Spark.
  • Estas bibliotecas são instaladas sobre as bibliotecas de nível de conjunto e runtime base e têm a maior precedência.
  • As bibliotecas com âmbito de sessão não persistem entre sessões.

Pacotes Python com âmbito de sessão

Gerir pacotes Python com âmbito de sessão através do ficheiro environment.yml

Para especificar pacotes Python com âmbito de sessão:

  1. Navegue para o conjunto do Spark selecionado e certifique-se de que ativou bibliotecas ao nível da sessão. Pode ativar esta definição ao navegar para o separador Gerir>Pacotes do conjunto > doApache Spark. Captura de ecrã a mostrar a ativação dos pacotes de sessão.
  2. Assim que a definição se aplicar, pode abrir um bloco de notas e selecionar ConfigurarPacotes de Sessão>. Captura de ecrã a mostrar a especificação de pacotes de sessão.Captura de ecrã a mostrar o carregamento do ficheiro Yml.
  3. Aqui, pode carregar um ficheiro Conda environment.yml para instalar ou atualizar pacotes numa sessão. As bibliotecas especificadas estão presentes assim que a sessão é iniciada. Estas bibliotecas deixarão de estar disponíveis após o fim da sessão.

Gerir pacotes Python com âmbito de sessão através de comandos %pip e %conda

Pode utilizar os comandos populares %pip e %conda para instalar bibliotecas de terceiros adicionais ou bibliotecas personalizadas durante a sessão do bloco de notas do Apache Spark. Nesta secção, utilizamos comandos %pip para demonstrar vários cenários comuns.

Nota

  • Recomendamos que coloque os comandos %pip e %conda na primeira célula do seu bloco de notas se pretender instalar novas bibliotecas. O interpretador Python será reiniciado após a biblioteca ao nível da sessão ser gerida para que as alterações entrem em vigor.
  • Estes comandos de gestão de bibliotecas Python serão desativados ao executar tarefas de pipeline. Se quiser instalar um pacote num pipeline, tem de tirar partido das capacidades de gestão de bibliotecas ao nível do conjunto.
  • As bibliotecas Python com âmbito de sessão são instaladas automaticamente nos nós de controlador e de trabalho.
  • Os seguintes comandos %conda não são suportados: criar, limpar, comparar, ativar, desativar, executar, empacotar.
  • Pode consultar os comandos %pip e %conda para obter a lista completa de comandos.

Instalar um pacote de terceiros

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, pode executar o seguinte código 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, tem de montar na sua conta de armazenamento ao executar 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>>"}  
) 

Em seguida, pode utilizar o comando de instalação %pip para instalar o pacote de roda necessário

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

Instalar outra versão da biblioteca incorporada

Pode utilizar o seguinte comando para ver qual é a versão incorporada de determinado pacote. Utilizamos o pandas como exemplo

%pip show pandas

O resultado é o seguinte registo:

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

Pode utilizar o seguinte comando para mudar o pandas para outra versão, digamos 1.2.4

%pip install pandas==1.2.4

Desinstalar uma biblioteca com âmbito de sessão

Se quiser desinstalar um pacote, que foi instalado nesta sessão de bloco de notas, poderá consultar os seguintes comandos. No entanto, não pode desinstalar os pacotes incorporados.

%pip uninstall altair vega_datasets --yes

Utilizar o comando %pip para instalar bibliotecas a partir de um ficheiro derequirement.txt

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

Pacotes Java ou Scala com âmbito de sessão

Para especificar pacotes Java ou Scala com âmbito de sessão, pode utilizar a opção %%configure :

%%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. Pode consultar este documento para obter a lista completa de parâmetros válidos.

Pacotes R com âmbito de sessão (Pré-visualização)

Azure Synapse Conjuntos de análise incluem muitas bibliotecas R populares. Também pode instalar bibliotecas de terceiros adicionais durante a sua sessão de bloco de notas do Apache Spark.

Nota

  • Estes comandos de gestão de bibliotecas R serão desativados ao executar tarefas de pipeline. Se quiser instalar um pacote num pipeline, tem de tirar partido das capacidades de gestão de bibliotecas ao nível do conjunto.
  • As bibliotecas R com âmbito de sessão são instaladas automaticamente nos nós de controlador e de trabalho.

Instalar um pacote

Pode instalar facilmente uma biblioteca R a partir de CRAN.

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

Também pode utilizar instantâneos CRAN como o repositório para garantir que transfere sempre a mesma versão do pacote.

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

Utilizar devtools para instalar pacotes

A devtools biblioteca simplifica o desenvolvimento de pacotes para agilizar tarefas comuns. Esta biblioteca está instalada no runtime predefinido do Azure Synapse Analytics.

Pode utilizar devtools para especificar uma versão específica de uma biblioteca a instalar. Estas 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, pode instalar uma biblioteca diretamente a partir do GitHub.

# Install a GitHub library. 

install_github("jtilly/matchingR") 

Atualmente, as seguintes devtools funções são suportadas no Azure Synapse Analytics:

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

Ver bibliotecas instaladas

Pode consultar todas as bibliotecas instaladas na sua sessão com o library comando .

library()

Pode utilizar a packageVersion função para verificar a versão da biblioteca:

packageVersion("caesar")

Remover um pacote R de uma sessão

Pode utilizar a detach função para remover uma biblioteca do espaço de nomes. Estas bibliotecas permanecem no disco até serem carregadas novamente.

# detach a library

detach("package: caesar")

Para remover um pacote com âmbito de sessão de um bloco de notas, utilize o remove.packages() comando . Esta alteração de biblioteca não tem impacto noutras sessões no mesmo cluster. Os utilizadores não podem desinstalar ou remover bibliotecas incorporadas do runtime predefinido do Azure Synapse Analytics.

remove.packages("caesar")

Nota

Não pode remover pacotes principais, como SparkR, SparklyR ou R.

Bibliotecas R com âmbito de sessão e SparkR

As bibliotecas com âmbito de bloco de notas estão disponíveis em funções de trabalho 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 âmbito de sessão e SparklyR

Com spark_apply() no SparklyR, pode utilizar qualquer pacote R dentro do Spark. Por predefinição, no sparklyr::spark_apply(), o argumento packages define como FALSO. Esta ação copia bibliotecas nos libPaths atuais para os trabalhadores, permitindo-lhe importá-las e utilizá-las em funções de trabalho. Por exemplo, pode executar o seguinte para gerar uma mensagem encriptada 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)

Passos seguintes