Aumente a eficiência do desenvolvimento com reutilização de código, montagem de datasets e gerenciamento de parâmetros. Conecte-se a engines de computação como MaxCompute Spark, EMR Serverless Spark e AnalyticDB for Spark.
Recomendamos a leitura de Basic Notebook Development.
Diferenças entre ambientes
O DataWorks Notebook é uma ferramenta de desenvolvimento e análise agendável que opera em dois ambientes:
Ambiente de desenvolvimento: Ao executar uma célula na página de edição do DataWorks Notebook no DataStudio, o código roda em uma instância de ambiente de desenvolvimento pessoal para validação e depuração rápidas.
Ambiente de produção: Após salvar e publicar um nó do DataWorks Notebook, o agendamento periódico ou o backfill de dados aciona a execução em uma instância de tarefa isolada e efêmera, garantindo execuções estáveis e confiáveis em produção.
Considere essas diferenças ao escrever códigos que devem funcionar em ambos os ambientes.
Diferenças de recursos
|
Recurso |
Ambiente de desenvolvimento (execução de célula) |
Ambiente de produção (agendamento periódico, backfill de dados) |
|
Referência a resources do projeto ( |
|
Entra em vigor automaticamente. |
|
Leitura e gravação de datasets (OSS/NAS) |
Monte o dataset no ambiente de desenvolvimento pessoal. |
Monte o dataset nas configurações de agendamento. |
|
Referência a parâmetros de workspace ( |
Os parâmetros são substituídos automaticamente pelos respectivos valores antes da execução do código. |
Os parâmetros são substituídos automaticamente pelos respectivos valores antes da execução da tarefa. |
|
Gerenciamento de sessão Spark |
A sessão Spark tem tempo limite de ociosidade de duas horas e é liberada automaticamente. |
O DataWorks cria e destrói automaticamente uma sessão de curta duração para cada instância de tarefa. |
Reutilize código e dados em produção
Referencie resources do projeto (arquivos .py)
Encapsule funções ou classes comuns em arquivos .py e referencie-os como resources do MaxCompute usando ##@resource_reference{"custom_name.py"}.
-
Crie e publique um resource Python
No painel de navegação à esquerda do DataStudio do DataWorks, clique em
para acessar o Resource Management.Na árvore do Resource Management, clique com o botão direito no diretório desejado ou clique em + no canto superior direito. Selecione New Resource > MaxCompute Python e nomeie o resource como
my_utils.py.-
Na seção Document Content, clique em Online Editing, cole o código da função utilitária depurada no editor e clique em Save.
# my_utils.py def greet(name): return f"Hello, {name} from resource file!" Na barra de ferramentas, clique em Save e depois em Publish. Isso torna o resource visível tanto para tarefas de desenvolvimento quanto de produção.
-
Referencie o resource em um notebook
Na primeira linha de uma célula Python no seu notebook, use a sintaxe
##@resource_referencepara referenciar o resource publicado.##@resource_reference{"my_utils.py"} # If the resource is in a directory, such as my_folder/my_utils.py, you still use ##@resource_reference{"my_utils.py"} without the directory name. from my_utils import greet message = greet('DataWorks') print(message) -
Depure e execute no ambiente de desenvolvimento
Execute a célula Python. O seguinte resultado será impresso:
Hello, DataWorks from resource file!ImportanteAo depurar e executar no ambiente de desenvolvimento, o sistema detecta a declaração
##@resource_referencee baixa o arquivo alvo do Resource Management paraworkspace/_dataworks/resource_referencesno seu diretório pessoal.Se ocorrer um erro ModuleNotFoundError, clique em Restart na barra de ferramentas do editor para recarregar o resource e tente novamente.
-
Publique no ambiente de produção e verifique
Após Save e Publish deste nó de Notebook, acesse Operation and Maintenance Center > Auto Triggered Task e clique em Test para executá-lo. Após a execução bem-sucedida da tarefa, a saída
Hello, DataWorks from resource file!aparecerá nos logs.ImportanteSe ocorrer um erro There is no file with id ..., certifique-se de ter publicado o resource Python no ambiente de produção primeiro.
Para mais operações, consulte MaxCompute resources and functions .
Leia e grave datasets (OSS/NAS)
Leia e grave arquivos grandes armazenados no OSS ou NAS durante a execução de tarefas do notebook.
Depuração no ambiente de desenvolvimento
-
Monte um dataset: Acesse a página de detalhes do seu ambiente de desenvolvimento pessoal. Em Storage Settings > Datasets, configure o dataset.
-
Acesso no código: O dataset é montado no caminho de montagem no seu ambiente de desenvolvimento pessoal. Leia ou grave diretamente nesse caminho no seu código.
# Assume you have mounted a dataset to /mnt/data/dataset in your personal development environment. import pandas as pd # Use the mount path directly. file_path = '/mnt/data/dataset/testfile.csv' df = pd.read_csv(file_path) # Use PyODPS to write the data to MaxCompute. o = %odps o.write_table('mc_test_table', df, overwrite=True) print(f"Successfully wrote data to the MaxCompute table mc_test_table")
Implantação em produção
-
Monte o dataset: No painel de navegação à direita do editor de nós do notebook, acesse Scheduling Settings > Scheduling Policy e adicione o mesmo dataset.
-
Acesso no código: Após salvar e publicar o notebook, o dataset será montado no caminho de montagem no ambiente de produção. Leia ou grave diretamente nesse caminho no seu código.
# Assume the dataset is mounted to /mnt/data/dataset in the production environment. import pandas as pd # Use the mount path directly. file_path = '/mnt/data/dataset/testfile.csv' df = pd.read_csv(file_path) # Use PyODPS to write the data to MaxCompute. o = %odps o.write_table('mc_test_table', df, overwrite=True) print(f"Successfully wrote data to the MaxCompute table mc_test_table")
Para mais operações, consulte Use datasets in a personal development environment .
Referencie parâmetros de workspace
Este recurso está disponível apenas no DataWorks Professional Edition e versões posteriores.
Além de scheduling parameters, o DataWorks oferece Parâmetros de Workspace para reutilizar configurações globais e isolar ambientes entre tarefas e nós. Referencie-os em células SQL e Python usando ${workspace.param}, onde param é o nome do parâmetro.
Crie Parâmetros de Workspace: No DataWorks, acesse Operation and Maintenance Center > Scheduling Settings > Workspace Parameters para criar os parâmetros.
-
Referencie Parâmetros de Workspace:
-
Referencie um Parâmetro de Workspace em uma célula SQL.
SELECT '${workspace.param}';Quando a consulta for executada com sucesso, ela imprimirá o valor resolvido do parâmetro.
-
Referencie um Parâmetro de Workspace em uma célula Python.
print('${workspace.param}')Quando o código for executado com sucesso, ele imprimirá o valor resolvido do parâmetro.
Para mais detalhes, consulte Use workspace parameters .
-
Interaja com engines de computação usando comandos mágicos
Comandos mágicos (prefixo % ou %%) conectam uma célula Python a recursos de computação sem a necessidade de codificar credenciais ou detalhes de conexão.
Conexão com o MaxCompute
Antes de se conectar a um recurso de computação do MaxCompute, certifique-se de ter bound a MaxCompute compute resource.
-
%odps: Obtenha um objeto de entrada PyODPS
Não requer AccessKey codificado.
-
Use um comando mágico para criar uma conexão com o MaxCompute. Insira
%odps. Um seletor de recursos de computação do MaxCompute aparece no canto inferior direito e seleciona automaticamente um recurso de computação. Clique em nome do projeto MaxCompute no canto inferior direito para alternar entre projetos do MaxCompute.o=%odps -
Use o recurso de computação do MaxCompute retornado para executar um script PyODPS.
Por exemplo, para obter todas as tabelas no projeto atual:
with o.execute_sql('show tables').open_reader() as reader: print(reader.raw)
-
-
%maxframe: Estabeleça uma conexão MaxFrame
Cria uma sessão MaxFrame para processamento distribuído de dados semelhante ao pandas no MaxCompute.
# Connect to and access the MaxCompute MaxFrame session. mf_session = %maxframe df = mf_session.read_odps_table('your_mc_table') print(df.head()) # After development and debugging, destroy the session to release resources. mf_session.destroy()
Conexão com recursos de computação Spark
O DataWorks Notebook suporta múltiplas engines Spark, cada uma com métodos de conexão, contextos de execução e ciclos de vida de recursos diferentes.
Um único nó de notebook pode se conectar a apenas um tipo de recurso de computação usando um comando mágico.
Comparação de engines
|
Recurso |
MaxCompute Spark |
EMR Serverless Spark |
AnalyticDB for Spark |
|
Comando de conexão |
|
|
|
|
Nota
Após executar o comando, o contexto de execução de todo o kernel do notebook muda para o ambiente PySpark remoto. Escreva código PySpark diretamente nas células subsequentes. |
|||
|
Pré-requisitos |
Vincule um recurso de computação MaxCompute. |
Vincule um recurso de computação EMR e crie um Livy Gateway. |
Vincule um recurso de computação AnalyticDB for Spark. |
|
Modo de ambiente de desenvolvimento |
Cria ou reutiliza automaticamente uma sessão Livy. |
Conecta-se a um Livy Gateway existente para criar uma sessão. |
Cria ou reutiliza automaticamente um Spark Connect Server. |
|
Modo de ambiente de produção |
Modo Livy: Envia jobs Spark por meio do service Livy. |
Modo batch spark-submit: Processamento em lote puro que não retém estado de sessão. |
Modo Spark Connect Server: Interage por meio do service Spark Connect. |
|
Liberação de recursos em produção |
A sessão é liberada automaticamente após o término da instância da tarefa. |
Os recursos são limpos automaticamente após o término da instância da tarefa. |
Os recursos são liberados automaticamente após o término da instância da tarefa. |
|
Casos de uso |
Processamento em lote e tarefas ETL fortemente integrados ao ecossistema MaxCompute. |
Tarefas de análise complexa que exigem configurações flexíveis e interação com o ecossistema de big data open source, como Hudi e Iceberg. |
Consultas interativas e análises de alto desempenho em tabelas C-Store do AnalyticDB for MySQL. |
MaxCompute Spark
Antes de se conectar a um recurso de computação MaxCompute, certifique-se de ter bound a MaxCompute compute resource.
Conecte-se à engine Spark integrada do seu projeto MaxCompute por meio do Livy.
-
Estabeleça uma conexão: Execute o seguinte comando em uma célula Python. O sistema cria ou reutiliza automaticamente uma sessão Spark.
# Create a Spark Session. %maxcompute_spark -
Execute código PySpark: Após estabelecer a conexão, use o cell magic
%%sparkpara executar código PySpark em uma nova célula Python.# When you use MaxCompute Spark, the Python cell must start with %%spark. %%spark df = spark.sql("SELECT * FROM your_mc_table LIMIT 10") df.show() -
Libere a conexão manualmente: Após o desenvolvimento e depuração, pare ou exclua a sessão manualmente. Ao executar no ambiente de produção, o sistema para e exclui automaticamente a sessão Livy da instância da tarefa atual.
# Clean up the Spark session and stop the Livy session. %maxcompute_spark stop # Clean up the Spark session, then stop and delete the Livy configuration. %maxcompute_spark delete
EMR Serverless Spark
Antes de se conectar a um recurso de computação, bind an EMR Serverless Spark compute resource no workspace e create a Livy Gateway.
Conecte-se ao EMR Serverless Spark por meio de um Livy Gateway existente.
-
Estabeleça uma conexão: Antes de executar o comando, selecione o recurso de computação EMR e o Livy Gateway no canto inferior direito da célula.
# Basic connection %emr_serverless_spark # Or, to pass custom Spark parameters at connection time, use two percent signs (%%). %%emr_serverless_spark { "spark_conf": { "spark.emr.serverless.environmentId": "<EMR_Serverless_Spark_runtime_environment_ID>", "spark.emr.serverless.network.service.name": "<EMR_Serverless_Spark_network_connection_ID>", "spark.driver.cores": "1", "spark.driver.memory": "8g", "spark.executor.cores": "1", "spark.executor.memory": "2g", "spark.driver.maxResultSize": "32g" } }NotaRelação entre parâmetros personalizados e configurações globais
Comportamento padrão: Os parâmetros personalizados definidos aqui aplicam-se apenas à sessão atual. Se você não fornecer parâmetros personalizados, o sistema usará os parâmetros globais configurados no Admin Center.
Uso recomendado: Para configurações que precisam ser reutilizadas em várias tarefas ou por vários usuários, recomendamos configurá-las globalmente em Admin Center > Serverless Spark > SPARK parameters para garantir consistência e simplificar o gerenciamento.
-
Regra de prioridade: Quando o mesmo parâmetro é definido tanto nos parâmetros personalizados quanto na configuração global, a opção GlobalConfiguration Priority no Admin Center determina qual configuração entra em vigor.
Se selecionada: A configuração global substitui os parâmetros personalizados para esta sessão.
Se não selecionada: Os parâmetros personalizados para esta sessão substituem a configuração global.
-
(Opcional) Reconecte: Se um administrador excluir acidentalmente o token na página do Livy Gateway, execute o seguinte comando para recriá-lo.
# Reconnect and refresh the Livy token for the current personal development environment. %emr_serverless_spark refresh_token -
Execute código PySpark ou SQL: Após uma conexão bem-sucedida, o kernel muda. Escreva código PySpark diretamente em uma célula Python ou escreva SQL em uma célula EMR Spark SQL.
-
Envie e execute código SQL no recurso de computação em uma célula EMR Spark SQL
Após estabelecer uma conexão usando
%emr_serverless_spark, escreva instruções SQL diretamente em uma célula EMR Spark SQL sem selecionar um recurso de computação na célula.A célula EMR Spark SQL reutiliza a conexão de
%emr_serverless_sparke envia o código para o recurso de computação alvo para execução.INSERT INTO employees VALUES (6, 'Fiona', 'Engineering', 98000.0), (7, 'George', 'Sales', 77000.0), (8, 'Hannah', 'Marketing', 72000.0), (9, 'Ian', 'Engineering', 105000.0), (10, 'Julia', 'HR', 68000.0); -
Envie e execute código PySpark no recurso de computação usando Python
Após estabelecer uma conexão usando
%emr_serverless_spark, envie e execute código PySpark em uma nova célula Python. Não é necessário adicionar o prefixo %%spark na célula.df = spark.sql("SELECT * FROM employees;") df.show() +---+-------+-----------+--------+ | id| name| department| salary| +---+-------+-----------+--------+ | 1| Alice|Engineering| 95000.0| | 2| Bob| Marketing| 75000.0| | 3|Charlie|Engineering|110000.0| | 4| Diana| HR| 70000.0| | 5| Evan| Sales| 80000.0| | 6| Fiona|Engineering| 98000.0| | 7| George| Sales| 77000.0| | 8| Hannah| Marketing| 72000.0| | 9| Ian|Engineering|105000.0| | 10| Julia| HR| 68000.0| +---+-------+-----------+--------+
-
-
Libere a conexão manualmente
ImportanteSe vários usuários compartilharem um Livy Gateway, o comando stop ou delete afetará todos os usuários que estão usando o gateway. Use esses comandos com cautela.
# Clean up the Spark session and stop the Livy session. %emr_serverless_spark stop # Clean up the Spark session, then stop and delete the Livy configuration. %emr_serverless_spark delete
AnalyticDB for Spark
Antes de se conectar ao recurso de computação, bind an AnalyticDB for Spark compute resource no workspace.
Conecte-se a uma engine AnalyticDB for Spark criando um Spark Connect Server.
-
Estabeleça uma conexão: Para garantir a conectividade de rede, configure corretamente o ID do vSwitch e o ID do grupo de segurança nos parâmetros de conexão. Antes de executar o comando, selecione o recurso de computação ADB Spark no canto inferior direito da célula.
# You must configure the vSwitch ID and security group ID to establish a network connection. %adb_spark add \ --spark-conf spark.adb.version=3.5 \ --spark-conf spark.adb.eni.enabled=true \ --spark-conf spark.adb.eni.vswitchId=<vSwitch_ID_of_ADB> \ --spark-conf spark.adb.eni.securityGroupId=<security_group_id_of_your_personal_development_environment> -
Execute código PySpark: Após a conexão bem-sucedida, execute código PySpark em uma nova célula Python.
# You can run operations only on C-Store tables. df = spark.sql("SELECT * FROM my_adb_cstore_table LIMIT 10") df.show()Nota : A engine AnalyticDB for Spark atualmente pode processar apenas tabelas C-Store que possuem o atributo
'storagePolicy'='COLD'. -
Libere a conexão manualmente: Após a depuração, limpe manualmente a sessão de conexão para economizar recursos. Em produção, os recursos são limpos automaticamente.
%adb_spark cleanup
Conexão com um recurso de computação Lindorm Ray
O grupo de recursos Ray da engine de computação Lindorm fornece computação distribuída para workloads de IA de ponta a ponta. Use-o para desenvolvimento interativo em notebooks e, em seguida, publique como uma tarefa de produção agendada.
-
Estabeleça uma conexão: Execute o comando mágico
%lindorm_rayem uma célula Python. Após executar o comando, um seletor de recursos de computação aparece no canto inferior direito da célula. Selecione seu recurso de computação Lindorm e o grupo de recursos Ray criado.# Connect to the specified Lindorm Ray resource group. %lindorm_rayImportanteApós se conectar a um recurso de computação Lindorm Ray, não é mais possível executar células SQL no mesmo notebook. A engine Lindorm Ray foca na execução de código Python e Ray.
Se a mesma célula de código for executada várias vezes, o sistema encerra automaticamente o job Ray anterior e inicia um novo. Isso evita desperdício de recursos e conflitos de tarefas.
-
Execute código Ray: Após uma conexão bem-sucedida, escreva e execute código Ray diretamente em uma nova célula Python. Os logs são transmitidos para a área de saída da célula em tempo real para depuração interativa.
O exemplo a seguir define uma tarefa remota simples usando o decorador
@ray.remote. A tarefa é executada no cluster Ray, e os logs e o resultado final são retornados para a área de saída da célula.import ray import time @ray.remote def hello_world(): print("Hello from Lindorm Ray!") time.sleep(5) return "Task finished." # Submit the remote task. result_ref = hello_world.remote() print(ray.get(result_ref)) -
(Opcional) Especifique parâmetros de inicialização personalizados: Para definir configurações adicionais para o ambiente Ray, como instalar pacotes Python de terceiros ou enviar arquivos de código locais, use
%%lindorm_raypara estabelecer a conexão.-
Exemplo 1: Instalar dependências
Use o parâmetro
pippara instalar o pacotejiebano ambiente Ray.%%lindorm_ray { "runtime_env": { "pip": ["jieba"] } }Após o ambiente estar pronto, importe e use o pacote nas tarefas Ray subsequentes. O exemplo a seguir mostra como chamar
jiebaem uma função remota para segmentação de palavras em chinês:import ray @ray.remote def do_work(x): import jieba return "/".join(jieba.cut(x)) print(ray.get(do_work.remote("Welcome to the DataWorks LindormRay solution"))) -
Exemplo 2: Enviar e usar resources do DataWorks
Use o parâmetro
working_dirpara enviar resources do Resource Management para o cluster Ray para importação em suas tarefas.ImportanteAo usar
working_dirpara enviar resources, os arquivos são enviados diretamente do seu ambiente de desenvolvimento para o cluster Ray. Aplica-se um limite de tamanho de 100 MB. Se o pacote de resources for muito grande, o envio pode falhar ou o nó Ray pode ficar instável.
# Reference and declare the path for a resource from Resource Management. %%lindorm_ray { "runtime_env": { "working_dir": "/mnt/workspace/_dataworks/resource_references" } }Suponha que você tenha enviado um arquivo chamado ray_resource.py para o Resource Management no DataWorks. Ao executar a seguinte célula, o sistema analisa a declaração
##@resource_referencee baixa o resource correspondente para/mnt/workspace/_dataworks/resource_references.ImportanteNo ambiente de desenvolvimento, após executar a célula que contém ##@resource_reference, execute novamente a célula
%%lindorm_rayanterior. Executar novamente esta célula inclui os resources baixados no working_dir e os envia para o cluster Ray. Não é necessário executar novamente a célula no ambiente de produção.import ray ##@resource_reference{"ray_resource.py"} @ray.remote def do_work(x): print('Ray says:', x) from ray_resource import fun fun() return x worker = do_work.remote("Welcome to the DataWorks LindormRay solution") print(ray.get(worker))
-
-
Agendamento e O&M de produção: Após o desenvolvimento e depuração, salve e publique este nó de notebook. Ele será agendado periodicamente como um nó Lindorm Ray em um DAG.
Parametrização: Seu código pode usar parâmetros de agendamento padrão do DataWorks, como
${bizdate}.Visualização de logs: Em produção, o sistema carrega apenas o primeiro 1 MB de logs por padrão para evitar problemas de desempenho. Se os logs forem truncados, a saída fornece um link para visualizar os logs completos da tarefa no console Lindorm.
Liberação de recursos: Após o término de uma tarefa de produção agendada, a tarefa Lindorm Ray entra em um estado terminal e libera recursos. Durante o desenvolvimento interativo, encerre a tarefa reiniciando o kernel ou fechando o notebook.
Apêndice: Referência rápida de comandos mágicos
|
Comando mágico |
Descrição |
Engine de computação |
|
|
Obtém um objeto de entrada PyODPS. |
MaxCompute |
|
|
Estabelece uma conexão MaxFrame. |
|
|
|
Cria uma sessão Spark. |
MaxCompute Spark |
|
|
Limpa a sessão Spark e para a sessão Livy. |
|
|
|
Limpa a sessão Spark, depois para e exclui a configuração Livy. |
|
|
|
Em uma célula Python, conecta-se a um recurso de computação Spark existente. |
|
|
|
Cria uma sessão Spark. |
EMR Serverless Spark |
|
|
Visualiza os detalhes do Livy Gateway. |
|
|
|
Limpa a sessão Spark e para a sessão Livy. |
|
|
|
Limpa a sessão Spark, depois para e exclui a configuração Livy. |
|
|
|
Atualiza o token Livy para o ambiente de desenvolvimento pessoal. |
|
|
|
Cria e conecta-se a uma sessão ADB Spark reutilizável. |
AnalyticDB for Spark |
|
|
Visualiza informações da sessão Spark. |
|
|
|
Para e limpa a sessão de conexão Spark atual. |
|
|
|
Estabelece uma conexão Lindorm Ray. |
Lindorm Ray |
|
|
Estabelece uma conexão Lindorm Ray e configura um ambiente de execução personalizado, como instalar dependências ou enviar código. |
Perguntas frequentes
-
P: Por que recebo um erro ModuleNotFoundError ou There is no file with id ... ao referenciar um resource do workspace?
R: Verifique o seguinte:
Acesse Data Development > Resource Management e certifique-se de que o resource Python do MaxCompute esteja salvo. Se esse erro ocorrer no ambiente de produção, confirme que o resource também foi publicado.
Clique em Restart na barra de ferramentas do editor de Notebook para recarregar o resource.
-
P: Após atualizar um resource do workspace, por que o Notebook ainda usa a versão antiga?
R: Nas configurações do DataStudio, defina
DataWorks › Notebook › Resource Reference: Download Strategycomo autoOverwrite e, em seguida, clique em Restart Kernel na barra de ferramentas do Notebook. -
P: Por que recebo um FileNotFoundError no ambiente de desenvolvimento ao referenciar um dataset?
R: Certifique-se de que o dataset esteja montado no ambiente de desenvolvimento pessoal selecionado.
-
P: A referência a um dataset funciona no ambiente de desenvolvimento, mas falha no ambiente de produção com o erro
Execute mount dataset exception! Please check your dataset config.R: Certifique-se de que o dataset esteja montado nas Scheduling Settings do nó de Notebook e que o dataset OSS tenha sido autorizado.
Na área de configuração do dataset, se uma mensagem vermelha "The current DataWorks resource group is not authorized" aparecer abaixo da lista suspensa do dataset, clique em Confirm Authorization à direita para conceder as permissões.
-
P: Como verifico a versão do meu ambiente de desenvolvimento pessoal?
R: No seu ambiente de desenvolvimento pessoal, pressione CMD+SHIFT+P e insira "ABOUT" para visualizar a versão atual. Se um recurso exigir a versão 0.5.69 ou posterior, use a opção One-click Upgrade no prompt de atualização exibido.
-
P: Por que a conexão com a engine Spark falha?
R: Siga estas etapas para solucionar o problema:
Verificações gerais: Na página de detalhes do workspace, acesse a lista de recursos de computação. Certifique-se de que o recurso de computação (MaxCompute, EMR ou ADB) esteja vinculado ao workspace e que sua conta tenha as permissões necessárias.
EMR Serverless Spark: Verifique se o Livy Gateway foi criado e está funcionando corretamente.
AnalyticDB for Spark: Concentre-se na solução de problemas de rede. Certifique-se de que
vswitchIdesecurityGroupIdestejam configurados corretamente e que exista conectividade de rede entre o ambiente de desenvolvimento pessoal e a instância AnalyticDB for Spark. Verifique as regras do grupo de segurança para garantir que elas permitam comunicação nas portas necessárias.