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:
Um cluster do AnalyticDB for MySQL nas edições Enterprise, Basic ou Data Lakehouse
Um grupo de recursos de job criado para o cluster
-
Uma conta de banco de dados configurada para o cluster:
Conta Alibaba Cloud: Criar uma conta privilegiada
Usuário RAM: Criar uma conta privilegiada e uma conta padrão e, em seguida, associar a conta padrão ao usuário RAM
Autorização de conta concluída
Armazenamento de logs da aplicação Spark configurado
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
-
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 -
Inicie o contêiner:
Parâmetros:
Parâmetro
Obrigatório
Descrição
Exemplo
-pNão
Mapeia uma porta do host para a porta
8888do contêiner.-p 8888:8888-vNã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/tmpdentro 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-dSim
O ID do cluster. Encontre-o na página Clusters no console ADB.
amv-bp164l********-rSim
O nome do grupo de recursos de job. Encontre-o em Cluster Management > Resource Management > Resource Groups no console.
test-eSim
O endpoint da API do cluster. Consulte Endpoints.
adb.aliyuncs.com-i/-kCondicional
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****************-tCondicional
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 **************** -
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
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.
-
Instale o SparkMagic:
pip install sparkmagic -
Instale o ipywidgets:
pip install ipywidgets -
(Opcional) Instale os kernels wrapper. O exemplo a seguir aplica-se ao JupyterLab 3.x. Execute
pip show sparkmagicpara 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 -
(Opcional) Edite o arquivo de configuração do SparkMagic em
~/.sparkmagic/config.jsonpara alterar o endereço do servidor Livy de127.0.0.1:5000para 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" } -
(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
-
Baixe a imagem ADB:
docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre -
Inicie o contêiner do proxy, que escuta na porta
5000:Parâmetro
Obrigatório
Descrição
Exemplo
-pNão
Mapeia uma porta do host para a porta
5000do contêiner.-p 5000:5000-vNã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-dSim
O ID do cluster. Encontre-o na página Clusters no console ADB.
amv-bp164l********-rSim
O nome do grupo de recursos de job. Encontre-o em Cluster Management > Resource Management > Resource Groups.
test-eSim
O endpoint da API do cluster. Consulte Endpoints.
adb.aliyuncs.com-i/-kCondicional
AccessKey ID e AccessKey secret. Consulte Contas e permissões. Use esta opção ou
-t, mas não ambas.—
-tCondicional
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
-
Baixe e instale o pacote do proxy:
pip install aliyun-adb-livy-proxy-0.0.1.zip -
Inicie o proxy:
Execute
adbproxy --helppara visualizar todos os parâmetros disponíveis.Parâmetro
Obrigatório
Padrão
Descrição
--dbSim
—
O ID do cluster. Encontre-o na página Clusters no console ADB.
--rgSim
—
O nome do grupo de recursos de job. Encontre-o em Cluster Management > Resource Management > Resource Groups.
--endpointSim
—
O endpoint da API. Consulte Endpoints.
--hostNão
127.0.0.1O endereço IP local ao qual o proxy se vincula.
--portNão
5000A porta na qual o proxy escuta.
-i/-kCondicional
—
AccessKey ID e AccessKey secret. Consulte Contas e permissões. Use esta opção ou
-t, mas não ambas.-tCondicional
—
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:
-
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.

-
Insira seus parâmetros personalizados usando
%%configure -f: O exemplo a seguir aloca 32 executores com especificaçãomedium(2 núcleos, 8 GB de memória cada), totalizando 64 ACUs:ImportanteAo especificar parâmetros personalizados do Spark, defina
spark.dynamicAllocation.enabledcomofalse.%%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.
Clique no botão
para aplicar a configuração.
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 -fnovamente.Para jobs interativos, todos os parâmetros de configuração são gravados diretamente na estrutura JSON — e não dentro do objeto
confexigido para jobs em lote.
Executar jobs do Spark
-
Insira o comando
sparkpara 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.

-
Execute Spark SQL prefixando as consultas com
%%sql. O exemplo a seguir lista todos os bancos de dados no cluster:ImportanteO prefixo
%%sqlé obrigatório. Sem ele, o conteúdo da célula é interpretado como Python. Execute%%helppara ver todos os comandos mágicos disponíveis.%%sql show databasesOs resultados correspondem aos bancos de dados disponíveis no seu cluster AnalyticDB for MySQL.
