Tavaszi felhő adatfolyam Apache Sparkkal

1. Bemutatkozás

A Spring Cloud Data Flow egy eszközkészlet az adatok integrálásához és a valós idejű adatfeldolgozási folyamatokhoz.

A csővezetékek ebben az esetben a Spring Boot alkalmazások, amelyek a Spring Cloud Stream vagy a Spring Cloud Task keretrendszer használatával készülnek.

Ebben az oktatóanyagban bemutatjuk, hogyan kell használni a Spring Cloud Data Flow-t az Apache Spark alkalmazással.

2. Adatfolyam helyi kiszolgáló

Először futtatnunk kell a Data Flow szervert a munkáink telepítéséhez.

A Data Flow Server helyi futtatásához létre kell hoznunk egy új projektet a spring-cloud-starter-dataflow-server-local függőség:

 org.springframework.cloud spring-cloud-starter-dataflow-server-local 1.7.4.KÖZLEMÉNY 

Ezt követően meg kell jelölnünk a szerver fő osztályát @EnableDataFlowServer:

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

Miután futtattuk ezt az alkalmazást, lesz egy helyi Data Flow szerverünk a 9393-as porton.

3. Projekt létrehozása

Létrehozunk egy Spark Jobot önálló helyi alkalmazásként, így nincs szükségünk fürtre a futtatásához.

3.1. Függőségek

Először hozzáadjuk a Spark függőséget:

 org.apache.spark spark-core_2.10 2.4.0 

3.2. Állás létrehozása

A mi munkánkhoz pedig közelítsük meg pi:

PiApproximation nyilvános osztály {public static void main (String [] args) {SparkConf conf = new SparkConf (). setAppName ("BaeldungPIApproximation"); JavaSparkContext context = új JavaSparkContext (conf); int szeletek = args.hossz> = 1? Integer.valueOf (args [0]): 2; int n = (100000L * szelet)> Egész.MAX_ÉRTÉK? Egész szám.MAX_VALUE: 100000 * szelet; Xs lista = IntStream.rangeClosed (0, n) .mapToObj (elem -> Integer.valueOf (elem)) .collect (Collectors.toList ()); JavaRDD dataSet = context.parallelize (xs, szeletek); JavaRDD pointsInsideTheCircle = dataSet.map (egész szám -> {double x = Math.random () * 2 - 1; double y = Math.random () * 2 - 1; return (x * x + y * y) egész szám + egész2 ); System.out.println ("A pi becsült értéke:" + count / n); context.stop (); }}

4. Adatfolyam Shell

A Data Flow Shell egy olyan alkalmazás, amely megteszi lehetővé teszi számunkra, hogy kapcsolatba lépjünk a szerverrel. A Shell a DSL parancsokkal írja le az adatfolyamokat.

A Data Flow Shell használatához létre kell hoznunk egy projektet, amely lehetővé teszi számunkra a futtatását. Először is szükségünk van a tavasz-felhő-adatfolyam-héj függőség:

 org.springframework.cloud spring-cloud-dataflow-shell 1.7.4.KÖZLEMÉNY 

A függőség hozzáadása után létrehozhatjuk azt az osztályt, amely a Data Flow héjat futtatja:

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

5. A projekt bevezetése

A projekt telepítéséhez az Apache Spark számára három változatban elérhető úgynevezett feladatfuttatót használjuk: fürt, fonal, és ügyfél. Folytatjuk a helyieket ügyfél változat.

A feladat futó az, ami a Spark munkánkat futtatja.

Ehhez először is meg kell regisztrálja feladatunkat a Data Flow Shell használatával:

alkalmazás-regisztráció - típusú feladat --name spark-client --uri maven: //org.springframework.cloud.task.app: spark-client-task: 1.0.0.BUILD-SNAPSHOT 

A feladat lehetővé teszi több különböző paraméter megadását, amelyek közül néhány választható, de néhány paraméter szükséges a Spark-feladat megfelelő telepítéséhez:

  • szikra.app-osztály, beküldött munkánk fő osztálya
  • szikra.app-jar, a munkánkat tartalmazó zsírkorsóhoz vezető út
  • spark.app-név, a munkánkhoz használt név
  • szikra.app-arg, az argumentumok, amelyeket továbbítanak a munkának

Használhatjuk a regisztrált feladatot szikra-kliens benyújtani a munkánkat, ne felejtsük el megadni a szükséges paramétereket:

feladat létrehozása spark1 --definition "spark-client \ --spark.app-name = my-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 "

Vegye figyelembe, hogy szikra.app-jar az utunk a zsír-korsóhoz a munkánkkal.

A feladat sikeres létrehozása után a következő paranccsal folytathatjuk a futtatást:

feladatindító szikra1

Ez felhívja a feladatunk végrehajtását.

6. Összefoglalás

Ebben az oktatóanyagban bemutattuk, hogyan használhatjuk a Spring Cloud Data Flow keretrendszert az adatok Apache Sparkkal történő feldolgozásához. További információk a Spring Cloud Data Flow keretrendszerről a dokumentációban találhatók.

Az összes kódminta megtalálható a GitHub oldalon.