Tok dát jarného cloudu s Apache Spark

1. Úvod

Spring Cloud Data Flow je sada nástrojov na budovanie integrácie údajov a potrubí spracovania údajov v reálnom čase.

Potrubie, v tomto prípade, sú aplikácie Spring Boot, ktoré sú zostavené s využitím rámcov Spring Cloud Stream alebo Spring Cloud Task.

V tomto tutoriáli si ukážeme, ako používať Spring Cloud Data Flow s Apache Spark.

2. Lokálny server toku údajov

Najskôr musíme spustiť server Data Flow Server, aby sme mohli nasadiť naše úlohy.

Aby sme mohli Data Flow Server spustiť lokálne, musíme vytvoriť nový projekt pomocou spring-cloud-starter-dataflow-server-local závislosť:

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

Potom musíme anotovať hlavnú triedu na serveri @EnableDataFlowServer:

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

Po spustení tejto aplikácie budeme mať na porte 9393 lokálny server toku údajov.

3. Vytvorenie projektu

Vytvoríme si Spark Job ako samostatnú lokálnu aplikáciu, aby sme na jej spustenie nepotrebovali žiadny klaster.

3.1. Závislosti

Najskôr pridáme závislosť Spark:

 org.apache.spark spark-core_2.10 2.4.0 

3.2. Vytvorenie pracovného miesta

A pre našu prácu si priblížime pi:

public class PiApproximation {public static void main (String [] args) {SparkConf conf = new SparkConf (). setAppName ("BaeldungPIApproximation"); JavaSparkContext context = nový JavaSparkContext (conf); int slices = args.length> = 1? Integer.valueOf (args [0]): 2; int n = (100000L * rezov)> Integer.MAX_VALUE? Celé číslo.MAX_VALUE: 100 000 * rezov; Zoznam xs = IntStream.rangeClosed (0, n) .mapToObj (element -> Integer.valueOf (element)) .collect (Collectors.toList ()); JavaRDD dataSet = context.parallelize (xs, slices); JavaRDD pointsInsideTheCircle = dataSet.map (integer -> {double x = Math.random () * 2 - 1; double y = Math.random () * 2 - 1; return (x * x + y * y) integer + integer2 ); System.out.println ("Hodnota pí bola odhadnutá ako:" + počet / n); context.stop (); }}

4. Shell toku údajov

Data Flow Shell je aplikácia, ktorá urobí umožňujú nám komunikovať so serverom. Spoločnosť Shell používa na opis tokov údajov príkazy DSL.

Aby sme mohli používať Data Flow Shell, musíme vytvoriť projekt, ktorý nám umožní jeho spustenie. Najprv potrebujeme spring-cloud-dataflow-shell závislosť:

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

Po pridaní závislosti môžeme vytvoriť triedu, ktorá spustí náš shell toku údajov:

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

5. Nasadenie projektu

Na nasadenie nášho projektu použijeme takzvaný task runner, ktorý je k dispozícii pre Apache Spark v troch verziách: zhluk, priadzaa zákazník. Ideme ďalej s miestnymi zákazník verzia.

Bežec úloh je to, čo riadi našu úlohu Spark.

Aby sme to dosiahli, musíme najskôr zaregistrujte našu úlohu pomocou Data Flow Shell:

registrácia aplikácie - typ úlohy - názov spark-client --uri maven: //org.springframework.cloud.task.app: spark-client-task: 1.0.0.BUILD-SNAPSHOT 

Úloha nám umožňuje určiť niekoľko rôznych parametrov, niektoré z nich sú voliteľné, ale niektoré parametre sú potrebné na správne nasadenie úlohy Spark:

  • iskra. trieda aplikácie, hlavná trieda nášho zadaného zamestnania
  • iskra.app-jar, cesta k nádobe na tuky obsahujúcej našu prácu
  • spark.app-názov, meno, ktoré sa bude používať pre našu prácu
  • spark.app-args, argumenty, ktoré sa dostanú k úlohe

Môžeme použiť zaregistrovanú úlohu iskrový klient predložiť našu prácu, nezabudnite uviesť požadované parametre:

úloha vytvoriť spark1 --definícia "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 "

Poznač si to iskra.app-jar je cesta k tuku-džbán s našou prácou.

Po úspešnom vytvorení úlohy môžeme pokračovať v jej spustení pomocou nasledujúceho príkazu:

spustenie úlohy spark1

Toto vyvolá vykonanie našej úlohy.

6. Zhrnutie

V tomto tutoriáli sme si ukázali, ako používať rámec Spring Cloud Data Flow na spracovanie údajov pomocou Apache Spark. Viac informácií o rámci jarného cloudového toku dát nájdete v dokumentácii.

Všetky ukážky kódu nájdete na GitHub.


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