Todos os produtos
Search
Central de documentação

AnalyticDB:Desenvolver um job interativo do Jupyter

Última atualização: Jun 27, 2026

O AnalyticDB for MySQL Spark permite executar jobs interativos do Spark diretamente em um ambiente Jupyter, usando recursos de computação elástica do cluster. Escolha entre uma configuração completa baseada em Docker, que dispensa instalação manual, ou um Jupyter Notebook instalado localmente e conectado via proxy ADB.

Pré-requisitos

Antes de começar, verifique se você tem:

Para configurar o armazenamento de logs, acesse o console do AnalyticDB for MySQL , clique no ID do cluster e selecione Job Development > Spark JAR Development no painel de navegação à esquerda. Em seguida, clique em Log Settings . Selecione o caminho padrão ou insira um caminho personalizado. O caminho personalizado não pode ser o diretório raiz do OSS — ele deve conter pelo menos uma subpasta.

Observações de uso

  • Os jobs interativos do Jupyter suportam apenas Python 3.7 e Scala 2.12.

  • Os recursos do Spark são liberados automaticamente após a sessão ficar ociosa por 1.200 segundos (contados a partir da execução do último bloco de código). Para alterar esse tempo limite, execute o seguinte comando em uma célula do Jupyter Notebook:

    %%configure -f
    {
       "spark.adb.sessionTTLSeconds": "3600"
    }

Escolher um método de conexão

Método

Mais indicado para

O que está incluído

Imagem Docker ADB (recomendado)

Início rápido, sem configuração local do Jupyter

JupyterLab + SparkMagic + proxy ADB, pré-configurados em uma única imagem

Jupyter instalado localmente

Reutilização de um ambiente Jupyter existente

Instalação manual do SparkMagic; início separado do proxy ADB

Método 1: Usar a imagem Docker ADB

Este método inicia um ambiente JupyterLab pré-configurado dentro de um contêiner Docker. A imagem inclui o SparkMagic e o proxy ADB, eliminando a necessidade de instalações adicionais.

Iniciar o contêiner Docker

  1. Instale e inicie o Docker.

  2. Baixe a imagem Jupyter do ADB:

    docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
  3. Inicie o contêiner:

    Parâmetros:

    Parâmetro

    Obrigatório

    Descrição

    Exemplo

    -p

    Não

    Mapeia uma porta do host para a porta 8888 do contêiner.

    -p 8888:8888

    -v

    Não

    Monta um diretório do host no contêiner para evitar perda de arquivos quando o contêiner for interrompido. Caminho recomendado no contêiner: /root/jupyter. Salve os arquivos de notebook em /tmp dentro do contêiner — eles aparecerão no caminho do host após a interrupção do contêiner. Consulte Volumes.

    -v /home/admin/notebook:/root/jupyter

    -d

    Sim

    O ID do cluster. Encontre-o na página Clusters no console ADB.

    amv-bp164l********

    -r

    Sim

    O nome do grupo de recursos de job. Encontre-o em Cluster Management > Resource Management > Resource Groups no console.

    test

    -e

    Sim

    O endpoint da API do cluster. Consulte Endpoints.

    adb.aliyuncs.com

    -i / -k

    Condicional

    O AccessKey ID e o AccessKey secret da sua conta Alibaba Cloud ou usuário RAM. Consulte Contas e permissões. Use esta opção ou -t, mas não ambas.

    LTAI****************

    -t

    Condicional

    Um token do Security Token Service (STS) — uma credencial temporária para uma função RAM. Obtenha-o chamando AssumeRole com um par de AccessKey. Use esta opção ou -i/-k, mas não ambas.

    docker run -it \
      -p {host-port}:8888 \
      -v {host-path}:{docker-path} \
      registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre \
      -d {cluster-id} \
      -r {resource-group-name} \
      -e {api-endpoint} \
      -i {ak-id} \
      -k {ak-secret} \
      -t {sts-token}   # Use either -t (STS token) or -i/-k (AccessKey pair)

    Exemplo:

    docker run -it -p 8888:8888 -v /home/admin/notebook:/root/jupyter \
      registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre \
      -d amv-bp164l******** -r test -e adb.aliyuncs.com \
      -i LTAI**************** -k ****************
  4. Após o início do contêiner, copie a URL da saída e abra-a no navegador:

    [I 2023-11-24 09:55:09.852 ServerApp] nbclassic | extension was successfully loaded.
    [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic extension enabled!
    [I 2023-11-24 09:55:09.853 ServerApp] sparkmagic | extension was successfully loaded.
    [I 2023-11-24 09:55:09.853 ServerApp] Serving notebooks from local directory: /root/jupyter
    [I 2023-11-24 09:55:09.853 ServerApp] Jupyter Server 1.24.0 is running at:
    [I 2023-11-24 09:55:09.853 ServerApp] http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp]  or http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

    Abra http://127.0.0.1:8888/lab?token=<token> para acessar o JupyterLab.

Se o contêiner falhar ao iniciar, verifique o arquivo proxy_{timestamp}.log para obter detalhes sobre o erro.

Método 2: Usar um Jupyter Notebook instalado localmente

Este método conecta uma instalação existente do Jupyter ao ADB Spark por meio do proxy ADB. O processo envolve três etapas: instalar o SparkMagic, iniciar o proxy e, por fim, iniciar o Jupyter.

Etapa 1: Instalar o SparkMagic

Importante

Execute todas as etapas opcionais em ordem estrita, sem pular ou reordenar nenhuma delas. Se você pular qualquer etapa, o engenheiro de plantão não conseguirá analisar problemas de ambiente pelos logs de inicialização do Jupyter, e você precisará resolver os erros por conta própria.

  1. Instale o JupyterLab ou JupyterHub.

  2. Instale o SparkMagic:

    pip install sparkmagic
  3. Instale o ipywidgets:

    pip install ipywidgets
  4. (Opcional) Instale os kernels wrapper. O exemplo a seguir aplica-se ao JupyterLab 3.x. Execute pip show sparkmagic para encontrar o caminho de instalação do SparkMagic e execute:

    jupyter-kernelspec install sparkmagic/kernels/sparkkernel
    jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
    jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
  5. (Opcional) Edite o arquivo de configuração do SparkMagic em ~/.sparkmagic/config.json para alterar o endereço do servidor Livy de 127.0.0.1:5000 para o IP e a porta de sua preferência. Para obter a referência completa de configuração, consulte o exemplo de configuração. Os campos relevantes são mostrados abaixo:

    "kernel_python_credentials": {
      "username": "",
      "password": "",
      "url": "http://127.0.0.1:5000",
      "auth": "None"
    },
    "kernel_scala_credentials": {
      "username": "",
      "password": "",
      "url": "http://127.0.0.1:5000",
      "auth": "None"
    },
    "kernel_r_credentials": {
      "username": "",
      "password": "",
      "url": "http://127.0.0.1:5000"
    }
  6. (Opcional) Ative as extensões do servidor para alternar entre clusters via código:

    jupyter server extension enable --py sparkmagic

Etapa 2: Iniciar o proxy ADB

Inicie o proxy ADB usando Docker ou a linha de comando.

Opção A: Docker

  1. Instale e inicie o Docker.

  2. Baixe a imagem ADB:

    docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
  3. Inicie o contêiner do proxy, que escuta na porta 5000:

    Parâmetro

    Obrigatório

    Descrição

    Exemplo

    -p

    Não

    Mapeia uma porta do host para a porta 5000 do contêiner.

    -p 5000:5000

    -v

    Não

    Monta um diretório do host no contêiner para evitar perda de arquivos quando o contêiner for interrompido.

    -v /home/admin/notebook:/root/jupyter

    -d

    Sim

    O ID do cluster. Encontre-o na página Clusters no console ADB.

    amv-bp164l********

    -r

    Sim

    O nome do grupo de recursos de job. Encontre-o em Cluster Management > Resource Management > Resource Groups.

    test

    -e

    Sim

    O endpoint da API do cluster. Consulte Endpoints.

    adb.aliyuncs.com

    -i / -k

    Condicional

    AccessKey ID e AccessKey secret. Consulte Contas e permissões. Use esta opção ou -t, mas não ambas.

    -t

    Condicional

    Token STS para uma função RAM. Obtenha-o chamando AssumeRole. Use esta opção ou -i/-k, mas não ambas.

    docker run -it \
      -p {host-port}:5000 \
      -v {host-path}:{docker-path} \
      registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre \
      -d {cluster-id} \
      -r {resource-group-name} \
      -e {api-endpoint} \
      -i {ak-id} \
      -k {ak-secret} \
      -t {sts-token}   # Use either -t (STS token) or -i/-k (AccessKey pair)

Opção B: Linha de comando

  1. Baixe e instale o pacote do proxy:

    pip install aliyun-adb-livy-proxy-0.0.1.zip
  2. Inicie o proxy:

    Execute adbproxy --help para visualizar todos os parâmetros disponíveis.

    Parâmetro

    Obrigatório

    Padrão

    Descrição

    --db

    Sim

    O ID do cluster. Encontre-o na página Clusters no console ADB.

    --rg

    Sim

    O nome do grupo de recursos de job. Encontre-o em Cluster Management > Resource Management > Resource Groups.

    --endpoint

    Sim

    O endpoint da API. Consulte Endpoints.

    --host

    Não

    127.0.0.1

    O endereço IP local ao qual o proxy se vincula.

    --port

    Não

    5000

    A porta na qual o proxy escuta.

    -i / -k

    Condicional

    AccessKey ID e AccessKey secret. Consulte Contas e permissões. Use esta opção ou -t, mas não ambas.

    -t

    Condicional

    Token STS para uma função RAM. Obtenha-o chamando AssumeRole. Use esta opção ou -i/-k, mas não ambas.

    adbproxy \
      --db {cluster-id} \
      --rg {resource-group-name} \
      --endpoint {api-endpoint} \
      --host 127.0.0.1 \
      --port 5000 \
      -i {ak-id} \
      -k {ak-secret} \
      -t {sts-token}   # Use either -t (STS token) or -i/-k (AccessKey pair)

    Após a inicialização, o console exibe mensagens de log do proxy confirmando que o serviço está em execução.

Etapa 3: Iniciar o Jupyter

Inicie o JupyterLab:

jupyter lab

Se você configurou um endereço de escuta personalizado, especifique-o com --ip:

jupyter lab --ip=<custom-ip>

Após a inicialização, copie a URL da saída e abra-a no navegador:

[I 2025-07-02 17:36:16.051 ServerApp] Serving notebooks from local directory: /home/newuser
[I 2025-07-02 17:36:16.052 ServerApp] Jupyter Server 2.16.0 is running at:
[I 2025-07-02 17:36:16.052 ServerApp] http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
[I 2025-07-02 17:36:16.052 ServerApp]     http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
[I 2025-07-02 17:36:16.052 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

Abra http://127.0.0.1:8888/lab?token=<token> para acessar o Jupyter.

Executar jobs no Jupyter

Configurar recursos do Spark

Ao abrir um novo notebook PySpark, o Spark inicia com a seguinte configuração padrão:

{
   "kind": "pyspark",
   "heartbeatTimeoutInSecond": "60",
   "spark.driver.resourceSpec": "medium",
   "spark.executor.resourceSpec": "medium",
   "spark.executor.instances": "1",
   "spark.dynamicAllocation.shuffleTracking.enabled": "true",
   "spark.dynamicAllocation.enabled": "true",
   "spark.dynamicAllocation.minExecutors": "0",
   "spark.dynamicAllocation.maxExecutors": "1",
   "spark.adb.sessionTTLSeconds": "1200"
}

Para usar parâmetros de configuração personalizados do Spark:

  1. Reinicie o kernel: na barra de navegação superior, selecione Kernel > Restart Kernel and Clear All Outputs. Confirme que não há aplicações Spark em execução.

    image

  2. Insira seus parâmetros personalizados usando %%configure -f: O exemplo a seguir aloca 32 executores com especificação medium (2 núcleos, 8 GB de memória cada), totalizando 64 ACUs:

    Importante

    Ao especificar parâmetros personalizados do Spark, defina spark.dynamicAllocation.enabled como false.

    %%configure -f
    {
       "spark.driver.resourceSpec": "large",
       "spark.sql.hive.metastore.version": "adb",
       "spark.executor.resourceSpec": "medium",
       "spark.adb.executorDiskSize": "100Gi",
       "spark.executor.instances": "32",
       "spark.dynamicAllocation.enabled": "false",
       "spark.network.timeout": "30000",
       "spark.memory.fraction": "0.75",
       "spark.memory.storageFraction": "0.3"
    }

    Para obter a referência completa de parâmetros, consulte Parâmetros de configuração de aplicação Spark e a documentação do Spark.

  3. Clique no botão image para aplicar a configuração.

Importante
  • Os parâmetros de configuração personalizados são redefinidos quando você fecha o notebook. Ao reabri-lo, os parâmetros padrão serão aplicados, a menos que você execute %%configure -f novamente.

  • Para jobs interativos, todos os parâmetros de configuração são gravados diretamente na estrutura JSON — e não dentro do objeto conf exigido para jobs em lote.

Executar jobs do Spark

  1. Insira o comando spark para iniciar uma SparkSession.

    Clique em Link no valor de retorno para abrir a UI do Spark, onde é possível visualizar logs de jobs e detalhes de execução.

    image

  2. Execute Spark SQL prefixando as consultas com %%sql. O exemplo a seguir lista todos os bancos de dados no cluster:

    Importante

    O prefixo %%sql é obrigatório. Sem ele, o conteúdo da célula é interpretado como Python. Execute %%help para ver todos os comandos mágicos disponíveis.

    %%sql
    show databases

    Os resultados correspondem aos bancos de dados disponíveis no seu cluster AnalyticDB for MySQL.

    image