- יישום של ארכיטקטורת לקוח-שרת באמצעות Spark Connect המנתקת את ביצוע האשכול מהסביבה המקומית.
- עדכון תמיכה עבור Java 17, 21 ו-25, יחד עם שימוש חובה ב-Scala 2.13 החל מגרסה 4.0.0.
- גמישות בפריסה באמצעות קבצים בינאריים ארוזים מראש עבור תלויות Hadoop ו-Maven, או התקנה דרך PyPI.
אם אתם עובדים בעולם הביג דאטה, אתם יודעים ש-Apache Spark הוא כמעט הסטנדרט בכל הנוגע לעיבוד כמויות עצומות של נתונים במהירות הבזק. עם הגעת גרסה 4.2, המסגרת לא רק שדרגה את הביצועים שלה, אלא גם עשתה קפיצת מדרגה איכותית באופן שבו אנו מתחברים לאשכולות, מה שהפך הכל לגמיש ופחות מסורבל.
ההיבט החזק ביותר של עדכון זה הוא ללא ספק האופן שבו הם שכללו את הארכיטקטורה כך שלא נצטרך לשאת את כל סביבת זמן הריצה על המחשב המקומי שלנו. כעת, הודות לארכיטקטורת לקוח-שרת בוגרת הרבה יותר, נוכל להפעיל תהליכים מורכבים מכל מקום מבלי שהמחשב שלנו יקרוס, להעביר את העבודה הקשה לשרת ולקבל את התוצאות שכבר עובדו.
דרישות טכניות ותאימות סביבתית

כדי להפעיל את Spark 4.2, חשוב להבין שתמיכה ב-Java היא קריטית. גרסה זו תואמת ל- Java 17, 21 ועד 25 , אם כי שימו לב שגרסאות Java 25 קודמות ל-25.0.3 כבר נחשבות מיושנות. בנוגע לשפת התכנות, הסטנדרט כעת הוא Scala 2.13 , ומשאיר באופן סופי את גרסה 2.12 מאחור, כך שאם יש לכם פרויקטים ישנים יותר, תצטרכו להעביר אותם.
עבור אלו המעדיפים Python, נדרשת גרסה 3.10 ומעלה , בעוד ש-R נתמך החל מגרסה 4.0, אם כי ראוי לציין שהשימוש ב-R נכנס לשלב של הוצאה משימוש. מערכת ההפעלה אינה רלוונטית, שכן Spark פועל בצורה חלקה הן על Windows והן על מערכות דמויות UNIX (כגון ענן לינוקס או macOS), בתנאי שמשתנה JAVA_HOME או PATH מוגדרים כהלכה.
אפשרויות התקנה ופריסה
כשאתם מורידים את Spark, יש לכם מספר אפשרויות בהתאם לתשתית שלכם. הנפוצה ביותר היא להוריד את החבילות המוגדרות מראש עבור Hadoop , מכיוון ש-Spark משתמש בספריות הלקוחות שלה כדי לנהל HDFS ו-YARN. עם זאת, אם יש לכם תצורה ספציפית מאוד, תוכלו לבחור בקובץ הבינארי "Hadoop free" ולהגדיר את ה-classpath בעצמכם.
אם אתם מפתחים, הדברים פשוטים יותר: משתמשי Java ו-Scala יכולים לשלב את המסגרת באמצעות קואורדינטות Maven , ומשתמשי Python יכולים להתקין אותה ישירות מ- PyPI . עבור הנועזים יותר שרוצים לשנות את מערכת הליבה, ישנה גם אפשרות לקמפל את Spark ישירות מקוד המקור.
מהפכת Spark Connect

כאן הדברים מתחילים להיות מעניינים. Spark Connect היא ארכיטקטורה ששוברת את המודל המסורתי שבו הלקוח והשרת היו בלתי נפרדים. כעת, הלקוח הוא שכבה קלת משקל שבונה תוכנית שאילתה לוגית ושולחת אותה דרך gRPC ו-Arrow לשרת המרוחק. שרת זה אחראי על ניתוח התוכנית, אופטימיזציה באמצעות Catalyst והפעלתה על האשכול.
הדבר הטוב ביותר במערכת הזו הוא שהלקוח כבר לא צריך שתהיה לו כל תשתית Spark או JVM מקומי כבד מותקן. זה מאפשר לנו לשלב את Spark במחשבים ניידים, IDEs, שירותי אינטרנט או אפילו סוכני בינה מלאכותית מבלי שגרסת הפייתון המקומית תצטרך להתאים באופן מדויק לגרסת האשכול. התוצאות מוחזרות ללקוח בקבוצות Arrow , מה שהופך את העברת הנתונים למהירה להפליא.
ביצוע אפליקציה ומצב אינטראקטיבי

עבור אלו שרוצים להתחיל להתנסות, Spark כולל סדרת דוגמאות במדריך. examples/src/mainכדי להריץ יישומי Python באופן אינטראקטיבי, השתמשו בפקודה bin/pyspark זהו הכלי המרכזי. אם אתם מעדיפים סקאלה או ג'אווה, תוכלו להשתמש bin/run-example <clase>, אשר מפעיל באופן פנימי את הסקריפט spark-send כדי להפעיל את האפליקציה.
ישנה גם אפשרות להשתמש במעטפת Scala שעברה שינוי, שהיא אידיאלית ללימוד אופן פעולתה הפנימית של המסגרת. פרט חיוני הוא השימוש באפשרות --masterאם אתם עושים בדיקות, עדיף להשתמש ב- מקומי עבור שרשור בודד או מקומי כדי לנצל ליבות מרובות של המעבד שלך לפני מעבר לסביבה מבוזרת.
שיפורים בתאימות ובמערכת האקולוגית
גרסה 4.2 לא שכחה את "Spark Classic". נעשתה עבודה רבה כדי לסגור את פער התאימות, ולשפר את התמיכה ב- ממשק API של RDD ומאפשרים זאת spark.read.* הוא מקבל DataFrames כקלט. בנוסף, עברו אופטימיזציה של התפשטות שגיאות, דיווח מצבים ותכונות אחרות. תמיכה במצב אשכול YARN.
בנוגע להפצה, חשוב לבדוק שתמונות Docker עשויות להכיל תוכנה שאינה ASF, לכן מומלץ לבדוק את קבצי ה-Docker שלהן. אם עליך לחזור לגרסאות קודמות מסיבות יציבות, קבצי גרסה זמינים , אם כי תמיד מומלץ לבדוק את דף האבטחה כדי להימנע מפגיעויות ידועות.
גרסה חדשה זו מחזקת את Spark ככלי רב-תכליתי ביותר, אשר הודות לניתוק בין לקוח לשרת, מאפשר דמוקרטיזציה של עיבוד ביג דאטה. עם תמיכה מעודכנת ב-Java ו-Scala, ואינטגרציה חלקה בהרבה עם סביבות פיתוח מודרניות, הוא הופך לבחירה ההגיונית עבור כל ניתוח נתונים גמיש המחפש יעילות ופשטות בפריסה.

