Compartilhar via


Gerenciar bibliotecas do Apache Spark no Microsoft Fabric

Uma biblioteca é uma coleção de códigos pré-escritos que os desenvolvedores podem importar para fornecer funcionalidade. Ao usar bibliotecas, você pode economizar tempo e esforço por não precisar escrever código do zero para realizar tarefas comuns. Em vez disso, importe a biblioteca e use suas funções e classes para obter a funcionalidade desejada. O Microsoft Fabric fornece vários mecanismos para ajudá-lo a gerenciar e usar as bibliotecas.

  • Bibliotecas internas: cada runtime do Spark do Fabric fornece um conjunto avançado de bibliotecas pré-instaladas populares. Você pode encontrar a lista completa de bibliotecas internas no Runtime do Spark do Fabric.
  • Biblioteca pública: bibliotecas públicas são provenientes de repositórios como PyPI e Conda, que têm suporte no momento.
  • Bibliotecas personalizadas: bibliotecas personalizadas referem-se ao código que você ou sua organização criam. O Fabric oferece suporte a eles nos formatos .whl, .jar e .tar.gz. O Fabric oferece suporte para .tar.gz somente para a linguagem R. Para bibliotecas personalizadas do Python, use o formato .whl.

Gerenciamento de biblioteca na configuração do workspace

Importante

Não há mais suporte para o gerenciamento de bibliotecas na configuração do workspace. Para migrar as bibliotecas do espaço de trabalho e as propriedades do Spark para um ambiente padrão, consulte Migrar as bibliotecas do espaço de trabalho e as propriedades do Spark.

Resumo do gerenciamento de bibliotecas e melhores práticas

Os cenários a seguir descrevem as práticas recomendadas.

Cenário 1: o administrador define bibliotecas padrão para o espaço de trabalho

Para definir bibliotecas padrão, você precisa ser o administrador do espaço de trabalho. Como administrador, você pode executar estas tarefas:

  1. Criar um novo ambiente
  2. Instale as bibliotecas necessárias no ambiente
  3. Anexe esse ambiente como o espaço de trabalho padrão

Os blocos de anotações e as definições de trabalho do Spark no espaço de trabalho são anexados às Configurações do espaço de trabalho. Eles iniciam sessões com as bibliotecas instaladas no ambiente padrão do espaço de trabalho.

Cenário 2: manter especificações de biblioteca para um ou vários itens de código

Se quiser manter as especificações da biblioteca, instale as bibliotecas em um ambiente e anexe-as aos itens de código.

Uma vantagem dessa abordagem é que ela economiza o esforço de executar o código que requer bibliotecas comuns o tempo todo. Depois de instaladas com êxito no ambiente, as bibliotecas serão eficazes em todas as sessões do Spark se o ambiente estiver anexado.

Outra vantagem é que a abordagem oferece suporte à granularidade da configuração da biblioteca inferior ao nível do espaço de trabalho. Um ambiente pode ser anexado a vários artefatos de código. Se você tiver um subconjunto de notebooks ou definições de trabalho do Spark em um workspace que exija as mesmas bibliotecas, anexe-as ao mesmo ambiente. Um administrador, membro ou colaborador do espaço de trabalho pode criar, editar e anexar o ambiente.

Cenário 3: instalação em linha em execução interativa

Se você estiver interessado no uso único, dentro de um bloco de anotações interativo, de uma biblioteca que não está instalada, a instalação em linha é a opção mais conveniente. Os comandos inline no Fabric permitem que você tenha a biblioteca em vigor na sessão atual do Spark no notebook. A biblioteca não persiste em diferentes sessões.

Os usuários que têm permissão para executar o notebook podem instalar outras bibliotecas na sessão do Spark.

Resumo dos tipos de biblioteca com suporte

Tipo de biblioteca Gerenciamento de bibliotecas de ambiente Instalação embutida
Python Public (PyPI e Conda) Com suporte Com suporte
Python Personalizado (.whl) Com suporte Com suporte
R Public (CRAN) Sem suporte Com suporte
R personalizado (.tar.gz) Com suporte Com suporte
Jar Com suporte como biblioteca personalizada Sem suporte

Importante

Atualmente, há limitações na biblioteca .jar.

  • Para os usuários do Scala, o arquivo .jar pode ser instalado com êxito em um ambiente, mas não é eficaz para as sessões do Spark/Scala. A instalação substitui a biblioteca interna por uma biblioteca diferente. O novo .jar funciona nas sessões.
  • Para usuários do Python, todos os arquivos .jar não são suportados atualmente em um ambiente. Eles podem ser instalados com êxito em um ambiente, mas não são eficazes nas sessões do PySpark.
  • Em vez disso, você pode instalar os arquivos .jar no nível da sessão do notebook.

Instalação embutida

Os comandos embutidos dão suporte a bibliotecas Python e bibliotecas R.

Instalação embutida do Python

O interpretador do Python é reiniciado para aplicar a alteração das bibliotecas. Todas as variáveis definidas antes de executar a célula de comando serão perdidas. É altamente recomendável que você coloque todos os comandos para adicionar, excluir ou atualizar pacotes do Python no início do notebook.

Os comandos embutidos para gerenciar bibliotecas Python são desabilitados na execução de pipeline do notebook por padrão. Se você quiser habilitar o %pip install para o pipeline, adicione "_inlineInstallationEnabled" como parâmetro bool igual a True nos parâmetros de atividade do notebook.

Captura de tela mostrando a configuração de habilitar a instalação do pip para a execução do pipeline do notebook.

Observação

O %pip install pode levar a resultados divergentes de vez em quando. É recomendável instalar a biblioteca em um ambiente e usá-la no pipeline. Em execuções de referência do notebook, não são aceitos comandos embutidos para gerenciar bibliotecas Python. Para garantir a exatidão da execução, recomenda-se remover esses comandos embutidos do notebook referenciado.

Recomendamos %pip em vez de !pip. !pip é um comando de shell interno do IPython que tem as seguintes limitações:

  • !pip instala apenas um pacote no nó do driver, não nos nós do executor.
  • Os pacotes que são instalados por meio do !pip não afetam os conflitos com os pacotes incorporados ou se os pacotes já estão importados em um notebook.

No entanto, o %pip lida com esses cenários. As bibliotecas instaladas por meio do %pip estão disponíveis nos nós do driver e do executor e ainda são efetivas mesmo que a biblioteca já tenha sido importada.

Dica

O comando %conda install geralmente leva mais tempo do que o comando %pip install para instalar novas bibliotecas do Python. Ele verifica as dependências completas e resolve conflitos.

Talvez você queira usar %conda install para obter mais confiabilidade e estabilidade. Você pode usar %pip install install se tiver certeza de que a biblioteca que deseja instalar não está em conflito com as bibliotecas pré-instaladas no ambiente de runtime.

Para obter todos os comandos em linha do Python disponíveis e esclarecimentos, consulte comandos %pip e comandos %conda.

Gerenciar bibliotecas personalizadas do Python por meio da instalação embutida

Neste exemplo, veja como usar comandos inline para gerenciar bibliotecas. Suponha que você queira usar altair, uma poderosa biblioteca de visualização para Python, para uma exploração de dados única. Suponha que a biblioteca não esteja instalada em seu workspace. O exemplo a seguir usa comandos conda para ilustrar as etapas.

Você pode usar comandos em linha para habilitar o altair em sua sessão de notebook sem afetar outras sessões do notebook ou outros itens.

  1. Execute os seguintes comandos em uma célula de código do notebook. O primeiro comando instala a biblioteca altair. Além disso, instale vega_datasets, que contém um modelo semântico que você pode usar para visualizar.

    %conda install altair          # install latest version through conda command
    %conda install vega_datasets   # install latest version through conda command
    

    A saída da célula indica o resultado da instalação.

  2. Importe o pacote e o modelo semântico executando os seguintes códigos em outra célula do notebook:

    import altair as alt
    from vega_datasets import data
    
  3. Agora você pode brincar com a biblioteca altair com escopo de sessão:

    # load a simple dataset as a pandas DataFrame
    cars = data.cars()
    alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    ).interactive()
    

Gerenciar bibliotecas personalizadas do Python por meio da instalação embutida

Você pode carregar suas bibliotecas personalizadas do Python na pasta Arquivo do lakehouse anexado ao bloco de anotações. Vá para o lakehouse, selecione o ícone ... na pasta Arquivo e carregue a biblioteca personalizada.

Após o upload, use o seguinte comando para instalar a biblioteca personalizada na sessão do notebook.

# install the .whl through pip command
%pip install /lakehouse/default/Files/wheel_file_name.whl             

Instalação embutida R

Para gerenciar bibliotecas do R, o Fabric oferece suporte a comandos install.packages(), remove.packages() e devtools::. Para obter todos os comandos embutidos do R disponíveis e esclarecimentos, consulte o comando install.packages e o comando remove.package.

Gerenciar bibliotecas públicas do R por meio da instalação embutida

Siga este exemplo para percorrer as etapas de instalação de uma biblioteca pública do R:

Para instalar uma biblioteca de feeds do R:

  1. Alterne o idioma de trabalho para SparkR(R) na faixa de opções do notebook.

  2. Instale a biblioteca caesar executando o seguinte comando em uma célula do notebook.

    install.packages("caesar")
    
  3. Agora você pode brincar com a biblioteca caesar no escopo da sessão com o trabalho do Spark.

    library(SparkR)
    sparkR.session()
    
    hello <- function(x) {
    library(caesar)
    caesar(x)
    }
    spark.lapply(c("hello world", "good morning", "good evening"), hello)
    

Gerenciar bibliotecas Jar por meio da instalação embutida

Os arquivos .jar são suportados em sessões de bloco de anotações com o seguinte comando.

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
    }
}        

A célula de código está usando o armazenamento do Lakehouse como exemplo. No explorador de blocos de anotações, você pode copiar o caminho ABFS completo do arquivo e substituí-lo no código. Captura de tela de obter o caminho ABFS.