Spring Cloud Data Flow Med Apache Spark

1. Introduktion

Spring Cloud Data Flow er et værktøjssæt til opbygning af dataintegration og realtids pipelines til databehandling.

Rørledninger er i dette tilfælde Spring Boot-applikationer, der er bygget med brug af Spring Cloud Stream eller Spring Cloud Task-rammer.

I denne vejledning viser vi, hvordan du bruger Spring Cloud Data Flow med Apache Spark.

2. Data Flow Local Server

Først skal vi køre Data Flow Server for at kunne implementere vores job.

For at køre Data Flow Server lokalt skal vi oprette et nyt projekt med spring-cloud-starter-dataflow-server-local afhængighed:

 org.springframework.cloud spring-cloud-starter-dataflow-server-local 1.7.4.RELEASE 

Derefter skal vi kommentere hovedklassen på serveren med @EnableDataFlowServer:

@EnableDataFlowServer @ SpringBootApplication offentlig klasse SpringDataFlowServerApplication {public static void main (String [] args) {SpringApplication.run (SpringDataFlowServerApplication.class, args); }}

Når vi kører denne applikation, har vi en lokal Data Flow-server på port 9393.

3. Oprettelse af et projekt

Vi opretter et Spark Job som en enkeltstående lokal applikation, så vi ikke har brug for nogen klynge for at køre det.

3.1. Afhængigheder

Først tilføjer vi Spark-afhængighed:

 org.apache.spark gnist-kerne_2.10 2.4.0 

3.2. Oprettelse af et job

Og for vores job, lad os tilnærme pi:

offentlig klasse PiApproximation {public static void main (String [] args) {SparkConf conf = new SparkConf (). setAppName ("BaeldungPIApproximation"); JavaSparkContext context = ny JavaSparkContext (conf); int skiver = args.længde> = 1? Integer.valueOf (args [0]): 2; int n = (100000L * skiver)> Heltal.MAX_VÆRDI? Integer.MAX_VALUE: 100000 * skiver; Liste xs = IntStream.rangeClosed (0, n) .mapToObj (element -> Integer.valueOf (element)) .collect (Collectors.toList ()); JavaRDD dataSet = context.parallelize (xs, skiver); JavaRDD pointsInsideTheCircle = dataSet.map (heltal -> {dobbelt x = Math.random () * 2 - 1; dobbelt y = Math.random () * 2 - 1; returnere (x * x + y * y) heltal + heltal2 ); System.out.println ("Pi blev estimeret som:" + antal / n); context.stop (); }}

4. Data Flow Shell

Data Flow Shell er et program, der vil sæt os i stand til at interagere med serveren. Shell bruger DSL-kommandoerne til at beskrive datastrømme.

For at bruge Data Flow Shell er vi nødt til at oprette et projekt, der giver os mulighed for at køre det. For det første har vi brug for spring-cloud-dataflow-shell afhængighed:

 org.springframework.cloud spring-cloud-dataflow-shell 1.7.4.RELEASE 

Efter at have tilføjet afhængigheden kan vi oprette den klasse, der kører vores dataflytningsskal:

@EnableDataFlowShell @ SpringBootApplication offentlig klasse SpringDataFlowShellApplication {public static void main (String [] args) {SpringApplication.run (SpringDataFlowShellApplication.class, args); }}

5. Implementering af projektet

For at implementere vores projekt bruger vi den såkaldte task runner, der er tilgængelig for Apache Spark i tre versioner: klynge, garnog klient. Vi fortsætter med det lokale klient version.

Opgaveløberen er det, der kører vores Spark-job.

For at gøre det skal vi først registrer vores opgave ved hjælp af Data Flow Shell:

app-register - type opgave - navn gnist-klient --uri maven: //org.springframework.cloud.task.app: gnist-klient-opgave: 1.0.0.BUILD-SNAPSHOT 

Opgaven giver os mulighed for at specificere flere forskellige parametre, nogle af dem er valgfri, men nogle af parametrene er nødvendige for at implementere Spark-job korrekt:

  • spark.app-klasse, hovedklassen i vores indsendte job
  • spark.app-jar, en sti til den fede krukke, der indeholder vores job
  • gnist.app-navn, det navn, der skal bruges til vores job
  • spark.app-args, de argumenter, der sendes til jobbet

Vi kan bruge den registrerede opgave gnistklient at indsende vores job og huske at angive de krævede parametre:

opgave oprette spark1 --definition "gnistklient \ --spark.app-navn = min-test-pi --spark.app-klasse = com.baeldung.spring.cloud.PiApproximation \ --spark.app-jar = /apache-spark-job-0.0.1-SNAPSHOT.jar --spark.app-args = 10 "

Noter det spark.app-jar er stien til fedtbeholderen med vores job.

Efter vellykket oprettelse af opgaven kan vi fortsætte med at køre den med følgende kommando:

opgavestart gnist1

Dette påberåber udførelsen af ​​vores opgave.

6. Resume

I denne vejledning har vi vist, hvordan vi bruger Spring Cloud Data Flow-rammen til at behandle data med Apache Spark. Flere oplysninger om Spring Cloud Data Flow-rammen kan findes i dokumentationen.

Alle kodeeksempler kan findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found