Apache Spark combineByKey הסביר



הבלוג הזה של Spark Hadoop אומר לך את כל מה שאתה צריך לדעת על Apache Spark combineByKey. מצא את הציון הממוצע לתלמיד בשיטת combineByKey.

תורם על ידי Prithviraj Bose

Spark היא מסגרת מחשוב אשכולית מהירה, המיועדת לחישוב מהיר ולביקוש לאנשי מקצוע עם מהווה משמעותית בשוק כיום.הנה ממשק API חזק ב- Spark שכן combineByKey .





סולם API: org.apache.spark.PairRDDFunctions.combineByKey .

כיצד להדפיס PHP PHP - -

ממשק API של פייתון: pyspark.RDD.combineByKey .



ה- API לוקח שלוש פונקציות (כמו ביטויים למבדה ב פִּיתוֹן אוֹ פונקציות אנונימיות ב סוּלָם ), כלומר,

  1. צור פונקציית קומבינר: x
  2. פונקציית ערך מיזוג: y
  3. פונקציית שילוב מיזוג: z

ופורמט ה- API הוא combineByKey (x, y, z) .

בואו נראה דוגמא (בסקאלה). ניתן למצוא את המקור המלא של סקאלה כאן .



המטרה שלנו היא למצוא את הציון הממוצע לתלמיד.

הנה מחלקת מצייני מיקום ScoreDetail אחסון שם התלמידים יחד עם ציון הנושא.

Scoredetail-spark-combinebykey

נתוני בדיקה מסוימים נוצרים ומומרים לערכים של צמד מפתחות איפה מפתח = שם התלמידים ו value = ScoreDetail למשל.

לאחר מכן אנו יוצרים RDD זוג כפי שמוצג בקטע הקוד שלמטה. רק לצורך ניסוי, יצרתי מחיצת hash בגודל 3, כך ששלושת המחיצות יכילו 2, 2 ו -4 זוגות ערכי מפתח בהתאמה. זה מודגש בחלק שבו אנו חוקרים כל מחיצה.

כעת אנו יכולים לחקור כל מחיצה. השורה הראשונה מדפיסה את האורך של כל מחיצה (מספר זוגות ערכי מפתח למחיצה) והשורה השנייה מדפיסה את התוכן של כל מחיצה.

טיפול בקבצים בדוגמת Java

והנה תנועת הגמר בה אנו מחשבים את הציון הממוצע לתלמיד לאחר שילוב הציונים על פני המחיצות.

זרימת הקוד לעיל היא כדלקמן ...
ראשית עלינו ליצור פונקציית קומבינר שהיא בעצם tuple = (value, 1) עבור כל מפתח בו נתקלים בכל מחיצה. לאחר שלב זה הפלט עבור כל (מפתח, ערך) במחיצה הוא (מפתח, (ערך, 1)).

ואז באיטרציה הבאה פונקציות המשלב לכל מחיצה מוזגות באמצעות פונקציית ערך המיזוג עבור כל מקש. לאחר שלב זה הפלט של כל (מפתח, (ערך, 1)) הוא (מפתח, (סה'כ, ספירה)) בכל מחיצה.

לבסוף פונקציית מיזוג המיזוג ממזגת את כל הערכים על פני המחיצות במבצעים ושולחת את הנתונים חזרה לנהג. לאחר שלב זה הפלט של כל (מפתח, (סה'כ, ספירה)) לכל מחיצה הוא
(מפתח, (totalAcrossAllPartitions, countAcrossAllPartitions)).

המפה ממירה את
(key, tuple) = (key, (totalAcrossAllPartitions, countAcrossAllPartitions))
כדי לחשב את הממוצע למפתח כ (key, tuple._1 / tuple._2).

השורה האחרונה מדפיסה את הציונים הממוצעים של כל התלמידים בסוף הנהג.

יש לך שאלה עבורנו? הזכר אותם בסעיף ההערות ונחזור אליך.

פוסטים קשורים:

substring בדוגמת שרת SQL

מחיצת חלוקה ב- Spark