זרימת נתוני ענן אביב עם ניצוץ אפאצ'י

1. הקדמה

זרימת נתונים של Spring Cloud היא ערכת כלים לבניית שילוב נתונים וצינורות עיבוד נתונים בזמן אמת.

צינורות, במקרה זה, הם יישומי Spring Boot אשר נבנים בעזרת מסגרות משימת Spring Cloud Stream או Spring Cloud Task.

במדריך זה נראה כיצד להשתמש בזרימת נתונים של ענן אביב עם Apache Spark.

2. זרימת נתונים שרת מקומי

ראשית, עלינו להפעיל את שרת הנתונים זרימה כדי להיות מסוגל לפרוס את המשרות שלנו.

כדי להפעיל את שרת הזרימת הנתונים באופן מקומי, עלינו ליצור פרויקט חדש עם ה- spring-cloud-starter-dataflow-server-local תלות:

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

לאחר מכן, עלינו להוסיף הערה למחלקה הראשית בשרת באמצעות @EnableDataFlowServer:

@EnableDataFlowServer @ SpringBootApplication מחלקה ציבורית SpringDataFlowServerApplication {ציבורי ריק ריק סטטי (String [] args) {SpringApplication.run (SpringDataFlowServerApplication.class, args); }}

לאחר הפעלת יישום זה יהיה לנו שרת נתונים זרימה מקומי ביציאה 9393.

3. יצירת פרויקט

ניצור ספארק ג'וב כאפליקציה מקומית עצמאית, כך שלא נצטרך שום אשכול להפעלתו.

3.1. תלות

ראשית, נוסיף את התלות של ניצוץ:

 org.apache.spark spark-core_2.10 2.4.0 

3.2. יצירת עבודה

ולתפקידנו, בואו לקרוא את pi:

class class PiApproximation {public static void main (String [] args) {SparkConf conf = new SparkConf (). setAppName ("BaeldungPIApproximation"); JavaSparkContext context = JavaSparkContext חדש (conf); פרוסות int = args.length> = 1? Integer.valueOf (args [0]): 2; int n = (100000L * פרוסות)> Integer.MAX_VALUE? Integer.MAX_VALUE: 100000 * פרוסות; רשימה xs = IntStream.rangeClosed (0, n) .mapToObj (אלמנט -> Integer.valueOf (אלמנט)) .collect (Collectors.toList ()); JavaRDD dataSet = context.parallelize (xs, slices); נקודות JavaRDDInsideTheCircle = dataSet.map (מספר שלם -> {כפול x = Math.random () * 2 - 1; y כפול = Math.random () * 2 - 1; החזר (x * x + y * y) שלם + מספר שלם 2 ); System.out.println ("ה- pi נאמד כ:" + ספירה / n); context.stop (); }}

4. מעטפת זרימת נתונים

נתונים זרימת מעטפת היא יישום זה יהיה מאפשרים לנו לקיים אינטראקציה עם השרת. מעטפת משתמשת בפקודות DSL לתיאור זרימות נתונים.

כדי להשתמש במעטפת זרימת הנתונים עלינו ליצור פרויקט שיאפשר לנו להריץ אותו. ראשית, אנו זקוקים ל אביב-ענן-זרם נתונים-מעטפת תלות:

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

לאחר הוספת התלות, אנו יכולים ליצור את המחלקה שתפעיל את מעטפת זרימת הנתונים שלנו:

@EnableDataFlowShell @ SpringBootApplication מחלקה ציבורית SpringDataFlowShellApplication {public static void main (String [] args) {SpringApplication.run (SpringDataFlowShellApplication.class, args); }}

5. פריסת הפרויקט

כדי לפרוס את הפרויקט שלנו נשתמש במה שמכונה רץ המשימות הזמין עבור Apache Spark בשלוש גרסאות: אֶשׁכּוֹל, חוּט, ו לָקוּחַ. אנחנו נמשיך עם המקומי לָקוּחַ גִרְסָה.

רץ המשימות הוא זה שמנהל את עבודת הספארק שלנו.

כדי לעשות זאת, ראשית עלינו רשום את המשימה שלנו באמצעות מעטפת נתונים זרימה:

רישום אפליקציה - סוג משימה - שם ניצוץ לקוח - אורי maven: //org.springframework.cloud.task.app: ניצוץ לקוח-משימה: 1.0.0.BUILD-SNAPSHOT 

המשימה מאפשרת לנו לציין מספר פרמטרים שונים, חלקם אופציונליים, אך חלק מהפרמטרים נחוצים כדי לפרוס את עבודת ה- Spark כראוי:

  • spark.app- class, המעמד העיקרי של העבודה שהוגשנו
  • spark.app-jar, דרך לצנצנת השומן המכילה את העבודה שלנו
  • spark.app-שֵׁם, השם שישמש לתפקיד שלנו
  • spark.app-args, הוויכוחים שיועברו לתפקיד

אנו יכולים להשתמש במשימה הרשומה לקוח ניצוץ להגיש את התפקיד שלנו, לזכור לספק את הפרמטרים הנדרשים:

משימה ליצור spark1 - הגדרה "ניצוץ לקוח \ - 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 "

ציין זאת spark.app-jar היא הדרך לצנצנת השומן עם העבודה שלנו.

לאחר יצירת המשימה בהצלחה, נוכל להמשיך ולהריץ אותה עם הפקודה הבאה:

מפעיל ניצוץ 1

זה יפעיל את ביצוע המשימה שלנו.

6. סיכום

במדריך זה, הראינו כיצד להשתמש במסגרת Spring Cloud Data Flow לעיבוד נתונים באמצעות Apache Spark. מידע נוסף על מסגרת זרימת הנתונים של ענן האביב ניתן למצוא בתיעוד.

ניתן למצוא את כל דוגמאות הקוד ב- GitHub.


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