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:
- 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.
- Depois que a configuração for aplicada, você poderá abrir um notebook e selecionar Configurar sessão>Pacotes.
- 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
- Exibir as bibliotecas padrão: suporte à versão do Apache Spark
- Gerenciar os pacotes fora do portal do Synapse Studio: Gerenciar pacotes por meio de comandos do Az e APIs REST