Spring Cloud Data Flow With Apache Spark

1. Introduksjon

Spring Cloud Data Flow er et verktøysett for å bygge dataintegrasjon og sanntids databehandlingsrørledninger.

Rørledninger, i dette tilfellet, er Spring Boot-applikasjoner som er bygget med bruk av Spring Cloud Stream eller Spring Cloud Task rammer.

I denne veiledningen viser vi hvordan du bruker Spring Cloud Data Flow med Apache Spark.

2. Dataflyt Lokal server

Først må vi kjøre Data Flow Server for å kunne distribuere jobbene våre.

For å kjøre Data Flow Server lokalt, må vi lage et nytt prosjekt med spring-cloud-starter-dataflow-server-local avhengighet:

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

Etter det må 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 kjører dette programmet, har vi en lokal Data Flow-server på port 9393.

3. Opprette et prosjekt

Vi oppretter en Spark Job som et frittstående lokalt program, slik at vi ikke trenger noen klynge for å kjøre det.

3.1. Avhengigheter

Først legger vi til Spark-avhengighet:

 org.apache.spark spark-core_2.10 2.4.0 

3.2. Opprette en jobb

Og for vår jobb, la oss 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.lengde> = 1? Integer.valueOf (args [0]): 2; int n = (100000L * skiver)> Heltall.MAX_VALUE? 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 (heltall -> {dobbelt x = Math.random () * 2 - 1; double y = Math.random () * 2 - 1; returnere (x * x + y * y) heltall + heltall2 ); System.out.println ("Pi ble estimert som:" + count / n); context.stop (); }}

4. Data Flow Shell

Data Flow Shell er et program som vil gjør oss i stand til å samhandle med serveren. Shell bruker DSL-kommandoene for å beskrive datastrømmer.

For å bruke Data Flow Shell må vi lage et prosjekt som lar oss kjøre det. Først trenger vi vår-sky-dataflow-shell avhengighet:

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

Etter å ha lagt til avhengigheten kan vi opprette klassen som kjører dataflytskallet:

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

5. Implementere prosjektet

For å distribuere prosjektet vårt, bruker vi den såkalte task runner som er tilgjengelig for Apache Spark i tre versjoner: klynge, garn, og klient. Vi skal fortsette med det lokale klient versjon.

Oppgaveløperen er det som driver Spark-jobben vår.

For å gjøre det, må vi først registrer oppgaven vår ved hjelp av Data Flow Shell:

appregister - type oppgave - navn gnistklient --uri maven: //org.springframework.cloud.task.app: gnistklientoppgave: 1.0.0.BUILD-SNAPSHOT 

Oppgaven lar oss spesifisere flere forskjellige parametere, noen av dem er valgfrie, men noen av parametrene er nødvendige for å distribuere Spark-jobben riktig:

  • spark.app-klasse, hovedklassen i den innsendte jobben vår
  • spark.app-jar, en vei til fettburken som inneholder jobben vår
  • spark.app-Navn, navnet som skal brukes til jobben vår
  • spark.app-args, argumentene som blir sendt til jobben

Vi kan bruke den registrerte oppgaven gnistklient for å sende inn jobben vår, og husk å oppgi de nødvendige parametrene:

oppgave lage spark1 --definisjon "spark-client \ --spark.app-name = min-test-pi --spark.app-class = 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 veien til fettkrukken med jobben vår.

Etter at oppgaven er vellykket, kan vi fortsette å kjøre den med følgende kommando:

oppgavelansering gnist1

Dette vil påkalle gjennomføringen av oppgaven vår.

6. Sammendrag

I denne veiledningen har vi vist hvordan du bruker Spring Cloud Data Flow-rammeverket til å behandle data med Apache Spark. Mer informasjon om Spring Cloud Data Flow-rammeverket finner du i dokumentasjonen.

Alle kodeeksempler finner du på GitHub.


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