Todos os produtos
Search
Central de documentação

E-MapReduce:SparkSQL development

Última atualização: Aug 28, 2026

Use o editor SQL integrado do EMR Serverless Spark para escrever e executar jobs Spark SQL interativamente. Após a execução, acesse a Spark UI para verificar o status, o uso de recursos e os logs.

Pré-requisitos

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

Criar um job Spark SQL

Importante

O EMR Serverless Spark carrega os parâmetros do DLF Catalog durante a inicialização da SparkSession. Definir parâmetros relacionados ao Catalog, como spark.sql.catalog.dlf.warehouse, dinamicamente no código PySpark com spark.conf.set() não surte efeito. Para configurar esses parâmetros corretamente, especifique-os como parâmetros de inicialização ao enviar o job. Por exemplo, adicione spark.sql.catalog.dlf.warehouse=oss://your-bucket/warehouse-path na seção Configuration do console do EMR Serverless Spark ou use o parâmetro --conf na CLI.

  1. Acesse a página de desenvolvimento.

    1. Faça login no console do 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 Development no painel de navegação à esquerda.

  2. Crie um job.

    1. Na aba Development, clique em ícone image.

    2. Na caixa de diálogo, insira um Name, defina Type como SparkSQL e clique em OK.

    3. No canto superior direito, selecione um catálogo de dados, um banco de dados e uma instância de sessão SQL em execução. Para criar uma nova instância de sessão SQL, selecione Connect to SQL Session na lista suspensa. Consulte Gerencie sessões SQL para mais detalhes.

    4. Insira as instruções SQL no editor.

      Exemplo 1: Operações SQL básicas

      Crie um banco de dados, mude para ele, crie uma tabela, insira linhas e consulte os dados.

      create DATABASE test_sql;
      
      use test_sql;
      
      CREATE TABLE IF NOT EXISTS my_table (id INT, name STRING);
      
      INSERT INTO my_table VALUES(1, 'Alice'),(2, 'Bob');
      
      SELECT * FROM my_table WHERE id > 1;

      Os resultados aparecem no painel de saída abaixo do editor.

      #

      id

      name

      1

      2

      Bob

      Exemplo 2: Tabela externa baseada em CSV

      Crie uma tabela externa baseada em um arquivo CSV no Object Storage Service (OSS) e execute uma consulta analítica. Substitua oss://<bucketname>/user/ pelo caminho real do seu bucket.

      1. Crie a tabela externa. Defina uma tabela chamada orders com os seguintes campos:

        • order_id: ID do pedido.

        • order_date: Timestamp do pedido, por exemplo, '2025-07-01 10:00:00'.

        • order_category: Categoria do product, por exemplo, 'Electronics' ou 'Apparel'.

        • order_revenue: Valor do pedido.

        CREATE TABLE orders (
          order_id       STRING,   -- Order ID
          order_date     STRING,   -- Order timestamp
          order_category STRING,   -- Product category
          order_revenue  DOUBLE    -- Order amount
        )
        USING CSV
        OPTIONS (
          path   'oss://<bucketname>/user/',
          header 'true'
        );
      2. Insira dados de teste.

        INSERT OVERWRITE TABLE orders VALUES
          ('o1',  '2025-07-01 10:00:00', 'Electronics', 5999.0),
          ('o2',  '2025-07-02 11:30:00', 'Apparel',     299.0),
          ('o3',  '2025-07-03 14:45:00', 'Electronics', 899.0),
          ('o4',  '2025-07-04 09:15:00', 'Home Goods',  99.0),
          ('o5',  '2025-07-05 16:20:00', 'Electronics', 1999.0),
          ('o6',  '2025-07-06 08:00:00', 'Apparel',     199.0),
          ('o7',  '2025-07-07 12:10:00', 'Electronics', 799.0),
          ('o8',  '2025-07-08 18:30:00', 'Home Goods',  59.0),
          ('o9',  '2025-07-09 20:00:00', 'Electronics', 399.0),
          ('o10', '2025-07-10 07:45:00', 'Apparel',     599.0),
          ('o11', '2025-07-11 09:00:00', 'Electronics', 1299.0),
          ('o12', '2025-07-12 13:20:00', 'Home Goods',  159.0),
          ('o13', '2025-07-13 17:15:00', 'Apparel',     499.0),
          ('o14', '2025-07-14 21:30:00', 'Electronics', 999.0),
          ('o15', '2025-07-15 06:10:00', 'Home Goods',  299.0);
      3. Execute uma consulta analítica. A consulta a seguir retorna o desempenho de vendas por categoria no período de 15 dias: contagem de pedidos, GMV total (Gross Merchandise Value), valor médio do pedido e hora do pedido mais recente. O resultado inclui apenas categorias com receita total acima de 1.000, ordenadas por GMV em ordem decrescente.

        SELECT
            order_category,
            COUNT(order_id)    AS order_count,
            SUM(order_revenue) AS gmv,
            AVG(order_revenue) AS avg_order_amount,
            MAX(order_date)    AS latest_order_date
        FROM orders
        WHERE
            CAST(order_date AS TIMESTAMP) BETWEEN '2025-07-01' AND '2025-07-15'
        GROUP BY order_category
        HAVING SUM(order_revenue) > 1000
        ORDER BY gmv DESC, order_category ASC;

      Exemplo 3: Criar uma tabela Hive Parquet (DLF Format Table)

      Por padrão, o EMR Serverless Spark usa Apache Paimon como formato de tabela. Para criar uma tabela Hive Parquet, substitua as configurações padrão nos parâmetros de inicialização do job.

      Parâmetros de inicialização

      Antes de criar uma tabela Hive Parquet, adicione os seguintes parâmetros de configuração do Spark para impedir que o catálogo Paimon intercepte a criação da tabela:

      spark.sql.catalog.spark_catalog=org.apache.spark.sql.hive.HiveCatalog
      spark.sql.defaultFileFormat=parquet

      Adicione esses parâmetros na seção Configuration do console do EMR Serverless Spark ou use o parâmetro --conf na CLI.

      Método SQL

      Use a sintaxe CREATE TABLE ... USING PARQUET para criar uma tabela Hive Parquet. Não use STORED AS PARQUET.

      CREATE TABLE my_parquet_table (
        id INT,
        name STRING,
        created_at TIMESTAMP
      ) USING PARQUET;

      Método da API DataFrame

      Use df.write.format("parquet").saveAsTable(...) para gravar dados como uma tabela Hive Parquet.

      df.write.format("parquet").saveAsTable("my_parquet_table")
      Nota

      Se o seu workspace estiver vinculado a um DLF Catalog, recomendamos criar tabelas usando sessões Spark ou instruções SQL para garantir consistência com o catálogo de metadados.

    5. (Opcional) Clique em aba Version Information à direita para comparar versões. O editor destaca as diferenças no código SQL entre as versões.

  3. Execute e publique o job.

    1. Clique em Run. Os resultados aparecem na aba Execution Results. Se ocorrer um erro, verifique a aba Execution Issues. O painel de histórico de execução à direita mostra registros dos últimos três dias.

    2. Após confirmar que o job foi executado corretamente, clique em Publish no canto superior direito.

    3. Na caixa de diálogo Publish, insira as notas de versão e clique em OK.

Acessar a Spark UI

A Spark UI exibe o status de execução das tarefas, o uso de recursos e informações de log. Use essas informações para analisar e otimizar seus jobs Spark.

Acesso pelos resultados da execução

Este método requer as seguintes versões de engine ou posteriores: esr-4.2.0 (esr-4.x), esr-3.2.0 (esr-3.x) ou esr-2.6.0 (esr-2.x).

Após a execução da instrução SQL, clique em Spark UI na parte inferior da aba Execution Results.

Acesso pela instância de sessão

Após a execução da instrução SQL, localize a instância de sessão e escolha image \> Spark UI.

Atalhos de teclado

Função

Windows

Mac

Descrição

Executar script atual

Ctrl + Enter

Control + Enter

Executa todas as instruções SQL ou apenas a seleção destacada. Equivalente a clicar em Run.

Formatar SQL

Ctrl + P

Control + P

Formata a estrutura SQL: padroniza recuos, quebras de linha e maiúsculas/minúsculas de palavras-chave.

Localizar texto

Ctrl + F

Control + F

Busca palavras-chave no script atual.

Salvar tarefa

Ctrl + S

Control + S

Salva o job atual não publicado para evitar perda de dados.

Próximos passos

Agende a execução periódica do job criando um workflow. Consulte Crie um workflow. Para um exemplo completo de agendamento, consulte Quick start for Spark SQL development.

FAQ

É possível ultrapassar o limite de download de 10.000 linhas para resultados de consultas?

Não. O download de resultados de consultas no desenvolvimento de dados do EMR Serverless Spark está sujeito a um limite rígido da plataforma. Você pode baixar no máximo 10.000 linhas, e o tamanho total do arquivo não pode exceder 10 MB. Não é possível modificar esse limite via configuração.

Para exportar conjuntos de dados maiores, use um dos métodos a seguir:

  • Envie um job usando spark-submit e grave os resultados no Object Storage Service (OSS) ou no Hadoop Distributed File System (HDFS).

  • Use uma tarefa de sincronização offline no DataWorks para exportar os dados.

O EMR Serverless Spark fornece APIs públicas para o Spark History?

Sim. O EMR Serverless Spark disponibiliza APIs públicas. Para obter a lista completa de operações de API disponíveis, consulte API overview.