Todos os produtos
Search
Central de documentação

E-MapReduce:Read from and write to HMS

Última atualização: Sep 06, 2026

A conectividade de rede permite que o Serverless Spark acesse fontes de dados, servidores e serviços em sua VPC (Virtual Private Cloud). Este guia detalha a configuração de uma conexão de rede para integrar jobs do Spark SQL e JAR a um Hive Metastore (HMS) na sua VPC.

Pré-requisitos

Prepare uma fonte de dados. Este exemplo utiliza um cluster de data lake criado na página EMR on ECS. O cluster inclui o service Hive e seus Metadata estão armazenados no Built-in MySQL. Para mais informações, consulte Create a cluster.

Etapa 1: Criar uma conexão de rede

  1. Acesse a página Network Connection.

    1. Faça login no console EMR.

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

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

    4. Na página EMR Serverless Spark, clique em Normal Network Connection no painel de navegação à esquerda.

  2. Na página Normal Network Connection, clique em Create Network Connection.

  3. Na caixa de diálogo Create Network Connection, configure os parâmetros abaixo e clique em OK.

    Parâmetro

    Descrição

    Name

    Insira um nome para a conexão.

    VPC

    Selecione a mesma VPC do cluster EMR.

    Caso não haja uma VPC disponível, clique em Create VPC para criar uma no console VPC. Para mais informações, consulte VPCs and vSwitches.

    Nota

    Se sua aplicação Serverless Spark precisar de acesso à internet, garanta que a conexão de rede o forneça. Por exemplo, implante um NAT gateway público na VPC para habilitar o acesso à internet nas instâncias do Serverless Spark. Para mais informações, consulte Public NAT Gateway.

    vSwitch

    Escolha um vSwitch na mesma VPC do cluster EMR.

    Se nenhum vSwitch estiver disponível na zona atual, clique em vSwitch para criar um no console VPC. Para mais informações, consulte Create and manage vSwitches.

    Importante

    A seleção de vSwitches restringe-se a zonas específicas. Para mais informações, consulte Usage limits.

    A conexão de rede será criada quando o Status mudar para Succeeded.

Etapa 2: Adicionar uma regra de grupo de segurança

  1. Obtenha o bloco CIDR do vSwitch utilizado pela conexão de rede.

    Faça login no console VPC e acesse a página vSwitch para localizar o bloco CIDR do vSwitch.

  2. Adicione uma regra ao grupo de segurança.

    1. Faça login no console EMR on ECS.

    2. Na página EMR on ECS, clique no ID do cluster desejado.

    3. Na página Basic Information, na seção Security, clique no link ao lado de Cluster Security Group.

    4. Na página Security Group Details, na seção Rules, clique em Add Rule, configure os parâmetros a seguir e clique em OK.

      Parâmetro

      Descrição

      Protocol

      Protocolo de rede permitido. Padrão: TCP.

      Nota

      Caso sua conexão de rede utilize autenticação Kerberos, selecione UDP e abra a porta 88. Para mais detalhes sobre autenticação Kerberos, consulte Enable Kerberos authentication.

      Source

      Insira o bloco CIDR do vSwitch obtido na etapa anterior.

      Importante

      Para evitar riscos de segurança, não defina Authorization Object como 0.0.0.0/0.

      Destination (Current Instance)

      Porta de destino a ser aberta. Exemplo: 9083.

(Opcional) Etapa 3: Conectar ao Hive e consultar dados

Ignore esta etapa se já possuir uma tabela Hive.

  1. Conecte-se ao nó mestre do cluster via SSH. Para mais informações, consulte Log on to a cluster.

  2. Inicie a linha de comando do Hive.

    hive
  3. Crie uma tabela.

    CREATE TABLE my_table (id INT,name STRING);
  4. Insira dados na tabela.

    INSERT INTO my_table VALUES (1, 'John'); 
    INSERT INTO my_table VALUES (2, 'Jane');
  5. Consulte os dados.

    SELECT * FROM my_table;

(Opcional) Etapa 4: Compilar e enviar artefato JAR

Para executar um job JAR, prepare um artefato antes. Ignore esta etapa para jobs Spark SQL.

  1. Crie um projeto Maven na máquina local.

    O projeto contém o seguinte:

    package com.example;
    
    import org.apache.spark.sql.Dataset;
    import org.apache.spark.sql.Row;
    import org.apache.spark.sql.SparkSession;
    
    public class DataFrameExample {
        public static void main(String[] args) {
            // Create a SparkSession with Hive support enabled.
            SparkSession spark = SparkSession.builder()
                    .appName("HMSQueryExample")
                    .enableHiveSupport()
                    .getOrCreate();
    
            // Execute a query.
            Dataset<Row> result = spark.sql("SELECT * FROM default.my_table");
    
            // Print the query results.
            result.show();
    
            // Stop the SparkSession.
            spark.stop();
        }
    }

    O arquivo pom.xml contém o seguinte:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>sparkDataFrame</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <spark.version>3.3.1</spark.version>
            <scala.binary.version>2.12</scala.binary.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
        </dependencies>
    </project>
  2. Execute o comando mvn package para empacotar o projeto. Esse comando gera o arquivo sparkDataFrame-1.0-SNAPSHOT.jar.

  3. Na página do EMR Serverless Spark do workspace, clique em Artifacts no painel de navegação à esquerda.

  4. Na página Artifacts, clique em Upload File.

  5. Envie o arquivo sparkDataFrame-1.0-SNAPSHOT.jar da máquina local.

Etapa 5: Criar e executar um job

Job JAR

  1. Na página do EMR Serverless Spark, clique em Development no painel de navegação à esquerda.

  2. Clique em Create.

  3. Insira um nome, selecione Application > JAR como tipo e clique em OK.

  4. No editor de jobs, configure os parâmetros a seguir. Mantenha os demais parâmetros com os valores padrão e clique em Run.

    Parâmetro

    Descrição

    Main JAR Resource

    Selecione o artefato enviado na etapa anterior. Exemplo: sparkDataFrame-1.0-SNAPSHOT.jar.

    Main Class

    Insira a classe principal do job. Neste exemplo, use com.example.DataFrameExample.

    Normal Network Connection

    Selecione a conexão de rede criada na Etapa 1.

    Spark Configuration

    Configure as propriedades abaixo.

    spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083
    spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

    Substitua ... pelo endereço IP privado do HMS (Hive Metastore Service). Neste exemplo, o HMS reside no nó mestre do cluster EMR. Encontre esse endereço na página Nodes do cluster EMR clicando no ícone image ao lado do grupo de nós emr-master.

  5. Após executar o job, vá até a seção Execution Records na parte inferior da página e clique em Log Exploration na coluna Actions do job.

  6. Na aba Log Exploration, visualize os logs do job.

Job Spark SQL

  1. Crie e inicie uma sessão SQL. Para mais informações, consulte Manage SQL sessions.

    • Normal Network Connection: Selecione a conexão de rede criada na Etapa 1.

    • Spark Configuration: Configure as propriedades a seguir.

      spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083
      spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

      Substitua *.*.*.* pelo endereço IP privado do HMS (Hive Metastore Service). Neste exemplo, o HMS reside no nó mestre do cluster EMR. Encontre esse endereço na página Nodes do cluster EMR clicando no ícone image ao lado do grupo de nós emr-master.

  2. Na página do EMR Serverless Spark, clique em Development no painel de navegação à esquerda.

  3. Na aba Development, clique no ícone image.

  4. Na caixa de diálogo Create, insira um nome como users_task, mantenha o Tipo como SparkSQL (padrão) e clique em OK.

  5. No novo editor de jobs, selecione o catalog, o banco de dados e a sessão SQL ativa. Insira a consulta abaixo e clique em Run.

    SELECT * FROM default.my_table;
    Nota

    Ao implantar código SQL que usa um Metastore externo em um workflow, certifique-se de que as instruções SQL especifiquem nomes de tabelas no formato db.table_name e que você selecione um banco de dados padrão no formato catalog_id.default na opção Catalog, no canto superior direito da interface.

    Os resultados da consulta aparecem na seção Execution Results na parte inferior da página.