Todos os produtos
Search
Central de documentação

E-MapReduce:Connect Jupyter Notebook to EMR Serverless Spark

Última atualização: Sep 17, 2026

O Jupyter Notebook é uma ferramenta de desenvolvimento interativa poderosa que permite escrever e executar código em uma interface web e visualizar os resultados instantaneamente, sem necessidade de pré-compilação ou execução de scripts separados. Este tópico descreve como criar um ambiente de desenvolvimento eficiente para interagir com o EMR Serverless Spark.

Informações básicas

O Apache Livy usa uma REST API para interagir com o Spark, o que simplifica a comunicação entre o Spark e os servidores de aplicativos. Para obter mais informações sobre a API do Livy, consulte REST API.

Para interagir com o EMR Serverless Spark no Jupyter Notebook, use o plugin sparkmagic ou uma imagem docker. Escolha o método mais adequado às suas necessidades.

Método

Caso de uso

Method 1: Use a Docker image to quickly start the environment

Configure rapidamente um ambiente de desenvolvimento autossuficiente ou replique a mesma configuração em várias máquinas usando uma imagem docker.

Method 2: Use the sparkmagic plugin to start the environment

O plugin sparkmagic para Jupyter Notebook interage com o Spark por meio de uma REST API. Atualmente, o sparkmagic suporta os protocolos Livy, Livy Lighter e Ilum. Configure o plugin sparkmagic no Jupyter Notebook e use a API Livy do EMR Serverless Spark para criar um ambiente de desenvolvimento eficiente destinado à interação com um cluster Spark remoto.

Pré-requisitos

Método 1: Usar uma imagem docker

Etapa 1: Criar um gateway e um token de acesso

  1. Crie e inicie um gateway.

    1. Acesse a página do gateway.

      1. Faça logon no console EMR.

      2. No painel de navegação à esquerda, escolha EMR Serverless > Spark.

      3. Na página Spark, clique em nome do workspace desejado.

      4. Na página EMR Serverless Spark, clique em O&M Center > Gateway no painel de navegação à esquerda.

    2. Clique em aba Livy Gateway.

    3. Na página Livy Gateway, clique em Create Livy Gateway.

    4. Na página Create Gateway, insira um Name, como Livy-gateway, e clique em create.

      Ajuste outros parâmetros conforme necessário. Para mais informações, consulte Manage Gateways.

    5. Na página Livy Gateway, localize o gateway criado e clique em START na coluna Actions.

  2. Crie um token.

    1. Na página Gateway, localize Livy-gateway e clique em Token Management na coluna Actions.

    2. Clique em Create Token.

    3. Na caixa de diálogo Create Token, insira um Name, como Livy-token, e clique em OK.

    4. Copie as informações do token.

      Importante

      Copie o token imediatamente após a criação. Não será possível visualizar essas informações posteriormente. Se o token expirar ou for perdido, crie um novo ou redefina-o.

Etapa 2: Baixar e iniciar a imagem docker

  1. Execute o comando a seguir para baixar a imagem docker:

    docker pull emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest
  2. Execute o comando a seguir para iniciar a imagem:

    docker run -p <host_port>:8888 emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest <endpoint> <token>

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Descrição

    <host_port>

    Substitua este placeholder pela porta do host.

    <endpoint>

    Substitua este placeholder pelo endpoint do Livy Gateway.

    Na página Livy Gateway, clique em nome do Livy Gateway criado. O endpoint está disponível na aba Overview.

    <token>

    Substitua este placeholder pelo token copiado na etapa anterior.

    Após o início da imagem, a saída será semelhante à seguinte:

    [I 2024-09-23 05:38:14.429 ServerApp] jupyter_lsp | extension was successfully linked.
    [I 2024-09-23 05:38:14.432 ServerApp] jupyter_server_terminals | extension was successfully linked.
    [I 2024-09-23 05:38:14.436 ServerApp] jupyterlab | extension was successfully linked.
    [I 2024-09-23 05:38:14.439 ServerApp] notebook | extension was successfully linked.
    [I 2024-09-23 05:38:14.439 ServerApp] Writing Jupyter server cookie secret to /root/.local/share/jupyter/runtime/jupyter_cookie_secret
    [I 2024-09-23 05:38:14.596 ServerApp] notebook_shim | extension was successfully linked.
    [I 2024-09-23 05:38:14.624 ServerApp] notebook_shim | extension was successfully loaded.
    [I 2024-09-23 05:38:14.625 ServerApp] jupyter_lsp | extension was successfully loaded.
    [I 2024-09-23 05:38:14.626 ServerApp] jupyter_server_terminals | extension was successfully loaded.
    [I 2024-09-23 05:38:14.627 LabApp] JupyterLab extension loaded from /root/miniforge3/envs/livy/lib/python3.8/site-packages/jupyterlab
    [I 2024-09-23 05:38:14.627 LabApp] JupyterLab application directory is /root/miniforge3/envs/livy/share/jupyter/lab
    [I 2024-09-23 05:38:14.628 LabApp] Extension Manager is 'pypi'.
    [I 2024-09-23 05:38:14.637 ServerApp] jupyterlab | extension was successfully loaded.
    [I 2024-09-23 05:38:14.640 ServerApp] notebook | extension was successfully loaded.
    [I 2024-09-23 05:38:14.640 ServerApp] Serving notebooks from local directory: /root
    [I 2024-09-23 05:38:14.640 ServerApp] Jupyter Server 2.14.2 is running at:
    [I 2024-09-23 05:38:14.640 ServerApp] http://6eca53b95ca2:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******
    [I 2024-09-23 05:38:14.640 ServerApp]     http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******
  3. Acesse a interface do Jupyter.

    Copie a url http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b****** da saída e abra-a no navegador. Agora você pode usar o service Jupyter para se conectar ao EMR Serverless Spark.

    Nota
    • Se a conexão for feita por um servidor remoto, substitua o endereço ip 127.0.0.1 pelo ip real do servidor.

    • Se a host_port definida na inicialização da imagem não for 8888, substitua o número da porta pelo valor real utilizado.

Etapa 3: Testar a conectividade

  1. Na página do JupyterLab, clique em PySpark.

  2. Execute o código a seguir para consultar todos os bancos de dados acessíveis:

    spark.sql("show databases").show()
    

    A saída a seguir será exibida:

    %%spark
    spark.sql("show databases").show()
    Starting Spark application
    ID	YARN Application ID	Kind	State	Spark UI	Driver log	User	Current session?
    1	livy-pxxx	pyspark	idle	Link		None	✔
    SparkSession available as 'spark'.
    +--------------------+
    |           namespace|
    +--------------------+
    |             default|
    |              xxx db|
    |            xxx dome|
    |           hive test|
    +--------------------+

Método 2: Usar o plugin sparkmagic

Etapa 1: Criar um gateway e um token de acesso

  1. Crie e inicie um gateway.

    1. Acesse a página do gateway.

      1. Faça logon no console EMR.

      2. No painel de navegação à esquerda, escolha EMR Serverless > Spark.

      3. Na página Spark, clique em nome do workspace desejado.

      4. Na página EMR Serverless Spark, clique em O&M Center > Gateway no painel de navegação à esquerda.

    2. Clique em aba Livy Gateway.

    3. Na página Livy Gateway, clique em Create Livy Gateway.

    4. Na página Create Gateway, insira um Name, como Livy-gateway, e clique em create.

      Ajuste outros parâmetros conforme necessário. Para mais informações, consulte Manage Gateways.

    5. Na página Livy Gateway, localize o gateway criado e clique em START na coluna Actions.

  2. Crie um token.

    1. Na página Gateway, localize Livy-gateway e clique em Token Management na coluna Actions.

    2. Clique em Create Token.

    3. Na caixa de diálogo Create Token, insira um Name, como Livy-token, e clique em OK.

    4. Copie as informações do token.

      Importante

      Copie o token imediatamente após a criação. Não será possível visualizar essas informações posteriormente. Se o token expirar ou for perdido, crie um novo ou redefina-o.

Etapa 2: Instalar e ativar o plugin sparkmagic

  1. Execute o comando a seguir para instalar o plugin sparkmagic:

    pip install sparkmagic
  2. Ative a extensão para o seu ambiente Jupyter (Jupyter Notebook ou JupyterLab).

    • Para usuários do Jupyter Notebook:

      jupyter nbextension enable --py --sys-prefix widgetsnbextension
    • Para usuários do JupyterLab:

      jupyter labextension install "@jupyter-widgets/jupyterlab-manager"

Para mais detalhes e opções avançadas de configuração do plugin sparkmagic, consulte a documentação do sparkmagic.

Etapa 3: Configurar e iniciar uma sessão interativa do Spark

  1. Acesse a interface do Jupyter. Para mais informações, consulte JupyterLab.

  2. Carregue a extensão sparkmagic.

    %load_ext sparkmagic.magics
  3. Modifique a configuração de inicialização da sessão.

    1. Aumente o tempo limite de inicialização para evitar falhas causadas por atrasos no agendamento de recursos.

      import sparkmagic.utils.configuration as conf
      conf.override("livy_session_startup_timeout_seconds", 1000)
                    
    2. (Opcional) Personalize a configuração de recursos do Spark.

      Adicione parâmetros como ttl e conf. Para mais informações, consulte Livy Docs - REST API.

      Por exemplo, a configuração a seguir altera as definições de recursos do driver.

      %% spark config
      {
         "conf": {
             "spark.driver.cores": "1",
             "spark.driver.memory": "7g"
         }
      }
      
  4. Crie uma sessão.

    Crie uma sessão do Spark no Jupyter Notebook usando Python ou Scala e forneça a configuração necessária.

    %spark add -s <session_name> -l python -u https://<endpoint> -a username -p <token>
    %spark add -s <session_name> -l scala -u https://<endpoint> -a username -p <token>

    Substitua os placeholders a seguir pelos valores reais.

    Parâmetro

    Descrição

    <session_name>

    Nome da sessão do Spark. Defina um nome personalizado.

    <endpoint>

    O Endpoint(Public) ou Endpoint(Private) encontrado na aba Overview.

    Ao usar um endpoint privado, certifique-se de que a máquina que executa o Jupyter esteja implantada na mesma região do Livy Gateway e altere o prefixo https:// do endpoint para http://.

    <token>

    Substitua este placeholder pelo token copiado na Etapa 1.

    O exemplo a seguir usa Python.

    %spark add -s test -l python -u https://emr-spark-livy-gateway-cn-hangzhou.data.aliyun.com/api/v1/workspace/w-0aaxxx livycompute/lc-76c4pcxxx -a username -p t6k2zy
    Starting Spark application
    ID  YARN Application ID  Kind     State  Spark UI  Driver log  User  Current session?
    0   livy-idqxxx          pyspark  idle   Link                  None  ✓
    SparkSession available as 'spark'.

    Aguarde de 1 a 5 minutos até que o status da Session mude para idle. Isso indica que a Session foi criada com sucesso e está pronta. Nesse momento, a interface exibe os detalhes da nova Session, permitindo iniciar o desenvolvimento interativo em PySpark. Você também pode visualizar as informações da Session na aba Sessions do Livy Gateway correspondente no console do Serverless Spark.

  5. Verifique a sessão.

    Após criar a sessão com sucesso, execute códigos usando %%spark. Por exemplo, use o código a seguir para listar todos os bancos de dados no ambiente Spark atual.

    %%spark
    spark.sql("show databases").show()
                  

    A saída a seguir será exibida:

    %%spark
    spark.sql("show databases").show()
    +---------+
    |namespace|
    +---------+
    |  default|
    |   testdb|
    +---------+

(Opcional) Etapa 4: Liberar recursos da sessão

  • Liberação automática

    A sessão encerra automaticamente após duas horas de inatividade.

  • Liberação manual

    • Use o plugin sparkmagic:

      %spark delete -s <session_name>
    • Use o console do EMR Serverless Spark:

      Na aba Sessions do Livy Gateway alvo, localize a sessão que deseja liberar e clique em Off na coluna Actions.