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:
- 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.
- Assim que a definição se aplicar, pode abrir um bloco de notas e selecionar ConfigurarPacotes de Sessão>.
- 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
- Ver as bibliotecas predefinidas: suporte da versão do Apache Spark
- Gerir os pacotes fora do portal do Synapse Studio: Gerir pacotes através de comandos Az e APIs REST