Crie um pacote JAR com sua lógica de negócios e faça upload dele para desenvolver jobs Spark JAR. Dois exemplos demonstram como desenvolver e implantar esses jobs.
Pré-requisitos
Você criou um workspace. Para mais informações, consulte Gerencie workspaces.
Você desenvolveu sua aplicação de negócios e a empacotou em um arquivo JAR.
Procedimento
Etapa 1: Desenvolver o pacote JAR
O EMR Serverless Spark não oferece um ambiente integrado de desenvolvimento JAR. Escreva o código da sua aplicação Spark e empacote-a em um arquivo JAR em um ambiente local ou independente.
No arquivo pom.xml do seu projeto Maven, adicione as dependências necessárias do Spark. Como o runtime do EMR Serverless Spark já inclui essas dependências, defina o scope como provided para evitar duplicação de pacotes e conflitos de versão, mantendo-as disponíveis para compilação e testes.
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.12</artifactId>
<version>3.5.2</version>
<scope>provided</scope>
</dependency>
Consultar tabela DLF
public class HiveTableAccess {
public static void main(String[] args) {
SparkSession spark = SparkSession.builder()
.appName("DlfTableAccessExample")
.enableHiveSupport()
.getOrCreate();
spark.sql("SELECT * FROM test_table").show();
spark.stop();
}
}
Calcular pi (π)
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;
import java.util.ArrayList;
import java.util.List;
/**
* Computes an approximation to pi
* Usage: JavaSparkPi [partitions]
*/
public final class JavaSparkPi {
public static void main(String[] args) throws Exception {
SparkSession spark = SparkSession
.builder()
.appName("JavaSparkPi")
.getOrCreate();
JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());
int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2;
int n = 100000 * slices;
List<Integer> l = new ArrayList<>(n);
for (int i = 0; i < n; i++) {
l.add(i);
}
JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);
int count = dataSet.map(integer -> {
double x = Math.random() * 2 - 1;
double y = Math.random() * 2 - 1;
return (x * x + y * y <= 1) ? 1 : 0;
}).reduce((integer, integer2) -> integer + integer2);
System.out.println("Pi is roughly " + 4.0 * count / n);
spark.stop();
}
}
Clique em SparkExample-1.0-SNAPSHOT.jar para baixe o pacote JAR de teste.
Etapa 2: Fazer upload do pacote JAR
-
Acesse a página de upload de artefatos.
Faça login no console EMR.
No painel de navegação à esquerda, escolha EMR Serverless > Spark.
Na página Spark, clique em o nome do workspace desejado.
No painel de navegação à esquerda da página do EMR Serverless Spark, clique em Artifacts.
Na página Artifacts, clique em Upload File.
-
Na caixa de diálogo Upload File, clique em a área de upload para selecione o pacote JAR local ou arraste-o para essa área.
Este exemplo utiliza SparkExample-1.0-SNAPSHOT.jar.
Etapa 3: Desenvolver e executar o job
No painel de navegação à esquerda da página do EMR Serverless Spark, clique em Development.
Na aba Development, clique em o ícone
.Insira um nome, selecione como tipo e clique em OK.
-
No canto superior direito, selecione uma fila de recursos.
Para mais informações sobre como adicionar uma fila, consulte Gerencie filas de recursos.
-
No editor do novo job, configure os parâmetros abaixo. Mantenha as demais configurações padrão e clique em Run.
Parâmetro
Descrição
Main JAR Resource
Selecione o pacote JAR enviado. Este exemplo usa SparkExample-1.0-SNAPSHOT.jar.
Main Class
Classe principal do job Spark.
-
Para calcular o valor aproximado de pi, insira
org.example.JavaSparkPi. -
Para consultar a tabela Hive, insira
org.example.HiveTableAccess.
-
-
Após a conclusão do job, acesse a seção Execution Records na parte inferior e clique em Logs na coluna Actions.
No painel Logs, escolha Driver log > Stdout. A saída
Pi is roughly 3.1403confirme que o job Spark foi executado com sucesso.A saída de exemplo para a consulta à tabela é uma tabela formatada contendo um registro:
id=1, name=jay.
Etapa 4: Publicar o job
É possível utilizar jobs publicados como tarefas em um workflow.
Após a conclusão do job, clique em Publish à direita.
Na caixa de diálogo exibida, insira as informações de publicação e clique em OK.
(Opcional) Etapa 5: Visualizar a Spark UI
Após a execução de um job, visualize seus detalhes na Spark UI.
No painel de navegação à esquerda, clique em Job History.
Na página Application, localize o job desejado e clique em Spark UI na coluna Actions.
A página exibe detalhes como User:
root, Scheduling Mode:FIFOe Completed Jobs:1. A entrada do job mostra ID 0, descriçãoreduce at SparkPi.scala:38, duração de 4s e progresso de stages (1/1) e tasks (2/2). Esses detalhes confirme a execução bem-sucedida do job Spark Pi.
Documentos relacionados
Após publicar o job, utilize-o como tarefa em um workflow. Para mais informações, consulte Gerencie workflows. Para um exemplo completo de orquestração de jobs, consulte Get Started with SparkSQL Development.