Partilhar via


Gerenciar bibliotecas do Apache Spark no Microsoft Fabric

Uma biblioteca é uma coleção de código pré-escrito que os desenvolvedores podem importar para fornecer funcionalidade. Usando bibliotecas, você pode economizar tempo e esforço ao não ter que escrever código do zero para executar 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 bibliotecas.

  • Bibliotecas integradas: cada tempo de execução do Fabric Spark fornece um rico conjunto de bibliotecas populares pré-instaladas. Você pode encontrar a lista completa de bibliotecas internas no Fabric Spark Runtime.
  • Bibliotecas públicas: As bibliotecas públicas são originárias de repositórios como PyPI e Conda, que atualmente são suportados.
  • 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 suporta .tar.gz apenas para o idioma R. Para bibliotecas personalizadas do Python, use o formato .whl .

Gerenciamento de biblioteca na configuração do espaço de trabalho

Importante

O gerenciamento de bibliotecas na configuração do espaço de trabalho não é mais suportado. Para migrar bibliotecas de espaço de trabalho e propriedades do Spark para um ambiente padrão, consulte Migrar as bibliotecas de espaço de trabalho e as propriedades do Spark.

Resumo das práticas recomendadas de gerenciamento de bibliotecas

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. Instalar as bibliotecas necessárias no ambiente
  3. Anexar este 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: Persistir as especificações da biblioteca para um ou vários itens de código

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

Um benefício dessa abordagem é que ela economiza esforço de execução do código que requer bibliotecas comuns o tempo todo. Uma vez instaladas com êxito no ambiente, as bibliotecas são eficazes em todas as sessões do Spark se o ambiente estiver anexado.

Outro benefício é que a abordagem suporta granularidade de configuração de 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 blocos de anotações ou definições de trabalho do Spark em um espaço de trabalho que exija as mesmas bibliotecas, anexe-os 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 embutidos no Fabric permitem que você tenha a biblioteca efetiva na sessão atual do Spark do bloco de anotações. A biblioteca não persiste em diferentes sessões.

Os usuários que têm permissão para executar o bloco de anotações podem instalar outras bibliotecas na sessão do Spark.

Resumo dos tipos de biblioteca suportados

Tipo de biblioteca Gestão de bibliotecas de ambiente Instalação em linha
Python Público (PyPI & Conda) Suportado Suportado
Python Personalizado (.whl) Suportado Suportado
R Público (CRAN) Não suportado Suportado
R personalizado (.tar.gz) Suportado Suportado
Frasco Suportado como biblioteca personalizada Não suportado

Importante

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

  • Para usuários do Scala, o arquivo .jar pode ser instalado com êxito em um ambiente, mas não é eficaz para suas 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 sucesso em um ambiente, mas não são eficazes em sessões do PySpark.
  • Em vez disso, você pode instalar os arquivos .jar no nível da sessão do bloco de anotações.

Instalação em linha

Os comandos em linha suportam bibliotecas Python e bibliotecas R.

Instalação em linha do Python

O interpretador Python reinicia para aplicar a mudança de bibliotecas. Todas as variáveis definidas antes de executar a célula de comando são perdidas. É altamente recomendável que você coloque todos os comandos para adicionar, excluir ou atualizar pacotes Python no início do seu bloco de anotações.

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

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

Nota

O %pip install pode levar a resultados inconsistentes de tempos em tempos. Recomenda-se instalar a biblioteca em um ambiente e usá-la no pipeline. Em execuções de referência de bloco de anotações, não há suporte para comandos embutidos para gerenciar bibliotecas Python. Para garantir a correção da execução, recomenda-se remover esses comandos embutidos do bloco de anotações referenciado.

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

  • !pip apenas instala um pacote no nó do driver, não nos nós do executor.
  • Os pacotes instalados por meio !pip não afetam os conflitos com os pacotes internos ou se os pacotes já foram importados em um bloco de anotações.

No entanto, %pip lida com esses cenários. As bibliotecas instaladas através %pip estão disponíveis nos nós de driver e executor e ainda são eficazes, mesmo que a biblioteca já esteja importada.

Gorjeta

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

Você pode querer usar %conda install para mais confiabilidade e estabilidade. Você pode usar %pip install se tiver certeza de que a biblioteca que deseja instalar não entra em conflito com as bibliotecas pré-instaladas no ambiente de tempo de execução.

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

Gerencie bibliotecas públicas Python através da instalação em linha

Neste exemplo, veja como usar comandos embutidos 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 no seu espaço de trabalho. O exemplo a seguir usa comandos conda para ilustrar as etapas.

Você pode usar comandos embutidos para habilitar o altair na sessão do bloco de anotações sem afetar outras sessões do bloco de anotações ou outros itens.

  1. Execute os seguintes comandos em uma célula de código do bloco de anotações. O primeiro comando instala a biblioteca altair . Além disso, instale o 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 o código a seguir em outra célula do bloco de anotações.

    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()
    

Gerencie bibliotecas personalizadas do Python através da instalação em linha

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

Após o carregamento, use o seguinte comando para instalar a biblioteca personalizada na sessão do bloco de anotações.

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

Instalação em linha R

Para gerenciar bibliotecas R, o Fabric suporta os install.packages()comandos , remove.packages()e devtools:: . Para todos os comandos e esclarecimentos em linha R disponíveis, consulte o comando install.packages e o comando remove.package.

Gerencie bibliotecas públicas R através da instalação em linha

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

Para instalar uma biblioteca de feeds R:

  1. Mude o idioma de trabalho para SparkR (R) no friso do bloco de notas.

  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 de césar com escopo de sessão com um trabalho do Spark.

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

Gerencie bibliotecas Jar através da instalação em linha

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 do bloco 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.