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.