מטמון מבוזר עם משתנים משודרים: Apache Spark



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

תורם על ידי Prithviraj Bose





משתני שידור שימושיים כאשר קבצי נתונים גדולים צריכים להיות מאוחסנים במטמון במבצעים. בלוג זה מסביר כיצד להתחיל.

מהם משתני שידור?



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

משתנה שידור שימוש במקרה

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

ניקח דוגמה פשוטה להבנת המושגים הנ'ל. יש לנו קובץ CSV עם שמות של מדינות ובירותיהן. ניתן למצוא את קובץ ה- CSV כאן .



CSV-file-distributed-caching

בהנחה שאנו מעבדים נתונים דמוגרפיים של מדינות ועלינו להשיג את בירת אותה מדינה. במקרה זה אנו יכולים להמיר את הנתונים בקובץ ה- CSV למשתנה שידור.

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

איך להטיל כפול ל- int בג'אווה

לאחר טעינה מוצלחת של קובץ ה- CSV אנו ממירים את המפה למשתנה שידור ומשתמשים בה בתכנית שלנו.

בקטע הקוד שלמעלה אנו טוענים את קובץ ה- CSV למפה מדינות ואז אנו ממירים את המפה הזו למשתנה משודר מדינות מטמון . בהמשך, אנו יוצרים RDD ממקשי ה- מדינות . בתוך ה searchCountryDetails שיטה אנו מחפשים את כל המדינות החל מאותיות שהוגדרו על ידי המשתמש והשיטה מחזירה RDD של מדינות יחד עם כותרותיהן. משתנה השידור countrieCache משמש לחיפוש הבירות.
בדרך זו אנחנו לא צריכים לשלוח את כל נתוני ה- CSV בכל פעם שאנחנו צריכים לחפש.

הקוד עבור ה- searchCountryDetails מוצג למטה,

ניתן למצוא את כל קוד המקור כאן .

java מצא את המספר הגדול ביותר ברשימה

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

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

הסבירו מצברי ניצוץ

Apache Spark combineByKey הסביר