מדריך PySpark - למד Apache Spark באמצעות Python

בבלוג זה במדריך PySpark, תוכלו ללמוד על PSpark API המשמש לעבודה עם Apache Spark באמצעות שפת תכנות Python.

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





הדרכת PySpark: מה זה PySpark?

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

תכונות PySpark - הדרכת PySpark - אדוריקה



נכתב במקור בשפת התכנות Scala, קהילת הקוד הפתוח פיתחה כלי מדהים לתמיכה ב- Python for Apache Spark. PySpark מסייע למדעני נתונים להתקשר עם RDDs ב- Apache Spark ו- Python דרך הספרייה שלו Py4j. ישנן תכונות רבות שהופכות את PySpark למסגרת טובה יותר מאחרות:

  • מְהִירוּת: זה מהיר פי 100 ממסגרות עיבוד נתונים בקנה מידה גדול מסורתי
  • אחסון במטמון חזק: שכבת תכנות פשוטה מספקת יכולות אחסון במטמון ועמידות בדיסק
  • פְּרִיסָה: ניתן לפרוס דרך Mesos, Hadoop דרך Yarn, או מנהל האשכולות של Spark עצמו
  • זמן אמת: חישוב בזמן אמת וחביון נמוך בגלל חישוב בזיכרון
  • פּוֹלִיגלוֹט: תומך בתכנות ב- Scala, Java, Python ו- R.

בואו נתקדם בלוג ההדרכות שלנו ב- PySpark ונראה היכן משתמשים בספארק בתעשייה.

PySpark בתעשייה

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



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

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

לְמַמֵן הוא מגזר נוסף בו עיבוד ה- Real-Time של אפאצ'י ספארק ממלא תפקיד חשוב. הבנקים משתמשים ב- Spark כדי לגשת ולנתח את פרופילי המדיה החברתית, כדי להשיג תובנות שיכולות לעזור להם לקבל החלטות עסקיות נכונות הערכת סיכוני אשראי , מודעות ממוקדות ופילוח לקוחות. נטישה של לקוחות מצטמצם גם באמצעות Spark. גילוי הונאה הוא אחד האזורים הנפוצים ביותר של למידה ממוחשבת, בו מעורב ניצוץ.

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

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

לִנְסוֹעַ תעשיות משתמשות גם באפצ'י ספארק. TripAdvisor , אתר נסיעות מוביל המסייע למשתמשים לתכנן טיול מושלם משתמש באפצ'י ספארק כדי להאיץ אותו המלצות לקוחות מותאמות אישית . טריפ אדוויזר משתמשת בניצוץ אפאצ'י כדי לספק ייעוץ למיליוני מטיילים מאת משווה מאות אתרים כדי למצוא את מחירי המלונות הטובים ביותר עבור לקוחותיה.

היבט חשוב במדריך זה של PySpark הוא להבין מדוע אנו צריכים ללכת על Python? מדוע לא Java, Scala או R?

הירשם לערוץ היוטיוב שלנו כדי לקבל עדכונים חדשים ..!


למה ללכת על פייתון?

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

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

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

אחד הנושאים החשובים ביותר במדריך זה של PySpark הוא השימוש ב- RDD. בואו להבין מה הם RDD

ניצוצות RDD

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

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

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

  • טרנספורמציות: טרנספורמציות יוצרות מערך נתונים חדש ממערך קיים. הערכה עצלנית
  • פעולות: ניצוץ מכריח את החישובים לביצוע רק כאשר פעולות מופעלות על ה- RDD

בואו נבין כמה טרנספורמציות, פעולות ופונקציות

קריאת קובץ והצגת אלמנטים עליונים:

rdd = sc.textFile ('file: /// home / edureka / Desktop / Sample') rdd.take (n)

תְפוּקָה:

[יערות היער מתעוררים כנושא הסביבתי והחברתי העיקרי שלבש כעת צורה של יותר משד חזק. עלינו לדעת על הסיבות, ההשפעות והדרכים לפתור את הבעיות שנוצרו בגלל כריתת היערות. ', u' סיפקנו פסקאות רבות, חיבור ארוך וקצר על כריתת יערות במטרה לעזור לילדיכם וילדיכם להיות מודעים לבעיה וכן להשתתף בתחרות כתיבת החיבורים בבית הספר או מחוץ לבית הספר. אתה יכול לבחור כל מאמר כריתת יערות המופיע להלן על פי תקן הכיתה. ', u' יערות מתעוררים כבעיה הגלובלית הגדולה ביותר לחברה ולסביבה. ']

המרה לאותיות קטנות ופיצול: (תחתון ופיצול)

def Func (קווים): קווים = lines.lower () קווים = lines.split () שורות החזרה rdd1 = rdd.map (Func) rdd1. take (5)

תְפוּקָה:

[[u'deforestation ', u'is', u'arising ', u'as', u'the ', u'main', u'nvironmental ', u'and', u'social ', u'issue ', u'which', u'has ', u'now', u'taken ', ...... . . ]

הסרת מילות עצירה: (פילטר)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'אני', 'הייתי', 'למה', 'עם'] rdd2 = rdd1.filter (lambda z: z not in stop_words) rdd2.take (10)

תְפוּקָה:

[u'deforestation ', u'arising', u'main ', u'environmental', u'social ', u'issue', u'which ', u'has', u'now ', u'taken' ]

סכום המספרים מ -1 עד 500: (צמצם)

sum_rdd = sc.parallelize (טווח (1,500)) sum_rdd.reduce (lambda x, y: x + y)

תְפוּקָה:

124750

למידת מכונה עם PySpark

בהמשך לבלוג ההדרכות שלנו ב- PySpark, בואו ננתח כמה נתוני BasketBall ונבצע חיזוי עתידי. אז הנה נשתמש בנתוני הכדורסל של כל שחקני ה- NBA מאז 1980 [שנת הכנסת 3 מצביעים].

טעינת נתונים:

df = spark.read.option ('כותרת', 'נכון'). אפשרות ('inferSchema', 'נכון') .csv ('קובץ: ///home/edureka/Downloads/season_totals.csv')

הדפסת עמודות:

הדפס (עמודות דפ)

תְפוּקָה:

['_c0', 'player', 'pos', 'age', 'team_id', 'g', 'gs', 'mp', 'fg', 'fga', 'fg_pct', 'fg3', ' fg3a ',' fg3_pct ',' fg2 ',' fg2a ',' fg2_pct ',' efg_pct ',' ft ',' fta ',' ft_pct ',' orb ',' drb ',' trb ',' ast ' , 'stl', 'blk', 'tov', 'pf', 'pts', 'yr']

מיון שחקנים (OrderBy) ו- toPandas:

כאן אנחנו ממיינים שחקנים על פי נקודה שהושגה בעונה.

df.orderBy ('pts', עולה = False). limit (10) .toPandas () [['yr', 'player', 'age', 'pts', 'fg3']]

תְפוּקָה:

שימוש ב- DSL וב- matplotlib:

כאן אנו מנתחים את המספר הממוצע של 3 נקודות ניסיונות עבור כל עונה במגבלת זמן של 36 דקות [מרווח המתאים למשחק NBA מלא משוער עם מנוחה מספקת]. אנו מחשבים את המדד הזה באמצעות מספר ניסיונות השער של שלוש נקודות (fg3a) ודקות המשחק (mp) ואז משרטטים את התוצאה באמצעות matlplotlib .

מ- pyspark.sql.functions ייבא col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}). בחר (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). כינוי ('fg3a_p36m')). OrderBy ('yr') מ- matplotlib ייבוא ​​pyplot כיבוא plt ים ים כמו סגנון sns plt. .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Year') _ = plt.title ('ממוצע נגן ניסיונות 3 נקודות (לכל 36 דקות) ') plt.annotate (' 3 מצביע הוצג ', xy = (1980, .5), xytext = (1981, 1.1), גודל גופן = 9, נפילות חץ = dict (צבע צבע =' אפור ', shrink = 0, linewidth = 2)) plt.annotate (' NBA נע בשורה של 3 נקודות ', xy = (1996, 2.4), xytext = (1991.5, 2.7), גודל גופן = 9, נפילות חץ = dict (צבע פנים = 'אפור', כיווץ = 0, קו רוחב = 2)) plt.annotate ('NBA הועבר קו 3 נקודות לאחור', xy = (1998, 2.), xytext = (1998.5, 2.4), גודל גופן = 9, זרעי חץ = dict (צבע צבע = 'אפור', כיווץ = 0, קו רוחב = 2))

תְפוּקָה:

רגרסיה לינארית וקטור אסמלר:

אנו יכולים להתאים מודל רגרסיה ליניארי לעקומה זו כדי לדגם את מספר ניסיונות הזריקה בחמש השנים הבאות. עלינו להפוך את הנתונים שלנו באמצעות הפונקציה VectorAssembler לעמודה אחת. זה דְרִישָׁה עבור ה- API לרגרסיה לינארית ב- MLlib.

מ pyspark.ml.feature יבוא VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

תְפוּקָה:

דגם בניין:

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

מתוך pyspark.ml.regression יבוא LinearRegression lr = LinearRegression (maxIter = 10) דגם = lr.fit (אימון)

החלת מודל מאומן על מערך הנתונים:

אנו מיישמים את מודל אובייקט המודל המאומן שלנו על מערך ההדרכה המקורי שלנו יחד עם 5 שנים של נתונים עתידיים

מ- pyspark.sql.types יבוא שורה מספר מודל החלה לעונת 1979-80 עד עונת 2020-21 training_yrs = training.select ('yr'). rdd.map (lambda x: x [0]). collect () training_y = training.select ('fg3a_p36m'). rdd.map (lambda x: x [0]). collect () prediction_yrs = [2017, 2018, 2019, 2020, 2021] all_yrs = training_yrs + prediction_yrs # test testing בנוי DataFrame test_rdd = sc.parallelize (all_yrs) row = שורה ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (שורה). toDF ()) # החל מודל רגרסיה ליניארי df_results = model.transform (all_years_features). toPandas ()

מתכנן את התחזית הסופית:

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

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', תווית = ללא) plt.xlabel (' שנה ') plt.ylabel (' מספר ניסיונות ') plt.legend (loc = 4) _ = plt.title (' ניסיונות של שלוש נקודות בממוצע לשחקן (לכל 36 דקות) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

תְפוּקָה:

ועם גרף זה, אנו מגיעים לסוף בלוג ההדרכה של PySpark.

אז זהו, חבר'ה!

אני מקווה שיש לכם מושג מה זה PySpark, מדוע Python הכי מתאים לספארק, RDDs והצצה ללימוד מכונה עם Pyspark בבלוג ההדרכה הזה של PySpark. מזל טוב, אתה כבר לא מתחיל ב- PySpark. אם אתה רוצה ללמוד עוד על PySpark ולהבין את המקרים השונים לשימוש בתעשייה, עיין ב ניצוץ עם פייתון בלוג.

עכשיו אחרי שהבנת מה זה פיזפארק, בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפזורים ברחבי העולם. אדוריקה הדרכת הסמכת פיתון ניצוצות באמצעות PySpark נועד לספק לך את הידע והמיומנויות הנדרשים כדי להפוך למפתח ניצוצות מצליח באמצעות פייתון ולהכין אותך לבחינת הסמכת Cloudera Hadoop ו- Spark Developer (CCA175).