מבוא ל- Spark with Python - PySpark למתחילים



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

היא המסגרת הנפוצה ביותר בכל הקשור לטיפול ועבודה עם Big Data AND פִּיתוֹן היא אחת משפות התכנות הנפוצות ביותר לניתוח נתונים, למידת מכונה ועוד. אז למה לא להשתמש בהם יחד? זה איפה ניצוץ עם פייתון מוכר גם בשם PySpark נכנס פנימההתְמוּנָה.

עם משכורת ממוצעת של 110,000 דולר לאלה למפתח Apache Spark, אין ספק ש- Spark משמש הרבה בתעשייה. בגללשֶׁלָהערכת ספרייה עשירה, פייתון משמש אתהרוב מדעני הנתונים ומומחי Analytics כיום. שילוב פייתון עם Spark היה מתנה גדולה לקהילה. Spark פותח בשפה Scala, שדומה מאוד לג'אווה. הוא מרכיב את קוד התוכנית לקוד byt עבור ה- JVM לצורך עיבוד נתונים גדולים. כדי לתמוך ב- Spark עם פיתון, קהילת Apache Spark פרסמה את PySpark.מאז ש, היה ידוע כאחד הכישורים המבוקשים ביותר בענף בשל מגוון היתרונות הרב שהגיע לאחר שילוב המיטב משני העולמות הללו.בבלוג זה ניצוץ עם פייתון, אדון בנושאים הבאים.





מבוא ל- Apache Spark

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



להלן כמה מהתכונות של Apache Spark המעניק לה יתרון על פני מסגרות אחרות:

תכונות ניצוץ - ניצוץ עם פיתון - אדוריקה

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

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

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



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

למרות שלסקאלה יש SparkMLlib אין לזה מספיק ספריות וכלים עבור Machine Learning ו- NLP מטרות. יתר על כן, Scala חסרה ויזואליזציה של נתונים.

אימון PySpark | Apache Spark with Python | אדוריקה

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

הגדרת Spark with Python (PySpark)

אני מקווה שאתם יודעים איך .אז ברגע שתהיה רוכסן תיק הניצוץ, מוּתקָן זה והוסיף שזה הדרך אליו .bashrc , עליך להקלידמקור .bashrc

ייצא SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 ייצא PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

כדי לפתוח את מעטפת pyspark עליכם להקליד את הפקודה./bin/pyspark

ניצוץ בתעשייה

Apache Spark בגלל תכונות מדהימות כמו עיבוד בזיכרון , פּוֹלִיגלוֹט ו עיבוד מהיר נמצאים בשימוש על ידי חברות רבות ברחבי העולם למטרות שונות בתעשיות שונות:

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

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

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

PySpark SparkContext וזרימת נתונים

אם מדברים על ניצוץ עם פייתון, עבודה עם RDD מתאפשרת על ידי הספרייה Py4j. מעטפת PySpark מקשרת את ממשק ה- Python API לליצת ניצוץ ומאתחשת את הקשר ה- Spark. הקשר ניצוץ הוא הלב של כל יישום ניצוץ.

  1. הקשר Spark מגדיר שירותים פנימיים ויוצר חיבור לסביבת ביצוע Spark.
  2. האובייקט sparkcontext בתוכנית הנהג מרכז את כל התהליך המבוזר ומאפשר הקצאת משאבים.
  3. מנהלי אשכולות מספקים לביצועים, שהם תהליך JVM עם לוגיקה.
  4. אובייקט SparkContext שולח את היישום למבצעים.
  5. SparkContext מבצע משימות בכל מבצע.

מקרה שימוש ב- PySpark KDD

עכשיו בואו נסתכל על מקרה שימוש של גביע KDD'99 (תחרות גילוי ידע בינלאומי וכריית נתונים).כאן ניקח חלק קטן ממערך הנתונים מכיוון שמערך הנתונים המקורי גדול מדי

ייבא urllib f = urllib.urlretrieve ('http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

יצירת RDD:
כעת נוכל להשתמש בקובץ זה ל ליצור את RDD שלנו .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file)

סִנוּן:

נניח שאנחנו רוצים לספור כמה נורמלי. אינטראקציות שיש לנו במערך הנתונים שלנו. אנחנו יכולים לְסַנֵן RDD raw_data שלנו כדלקמן.

normal_raw_data = raw_data.filter (lambda x: 'normal.' ב- x)

לספור:

עכשיו אנחנו יכולים לספור כמה אלמנטים יש לנו ב- RDD החדש.

משעת ייבוא ​​הזמן t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'יש {}' אינטראקציות 'רגילות'. פורמט (normal_count) הדפסה 'ספירה הושלמה ב- {} שניות'. פורמט (עגול (tt, 3))

תְפוּקָה:

יש 97278 אינטראקציות 'רגילות' שהושלמו ב- 5.951 שניות

מיפוי:

בזהמקרהאנו רוצים לקרוא את קובץ הנתונים שלנו כקובץ מעוצב של CSV. אנו יכולים לעשות זאת על ידי הפעלת פונקציית lambda על כל אלמנט ב- RDD באופן הבא. כאן נשתמש ב- למפות () ולקחת טרנספורמציה.

מ- pprint יבוא pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'ניתוח הושלם ב- {} שניות '. פורמט (עגול (tt, 3)) pprint (head_rows [0])

תְפוּקָה:

הניתוח הושלם תוך 1.715 שניות [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . לא נורמלי. ']

פְּצִיחָה:

כעת אנו רוצים שיהיה לכל אלמנט ב- RDD כצמד ערך מפתח כאשר המפתח הוא התג (למשל. נוֹרמָלִי ) והערך הוא כל רשימת האלמנטים המייצגת את השורה בקובץ המעוצב של CSV. נוכל להמשיך באופן הבא. כאן אנו משתמשים ב- line.split () ומפה ().

def parse_interaction (line): elems = line.split (',') tag = elems [41] return (tag, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 תְפוּקָה: (u'normal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0.00 ', u'1.00', .... לא נורמלי. '])

הפעולה האוספת:

כאן נשתמש בפעולת ה- collect (). זה יכניס את כל האלמנטים של RDD לזיכרון. מסיבה זו, יש להשתמש בזהירות בעבודה עם RDD גדולים.

t0 = זמן () all_raw_data = raw_data.collect () tt = זמן () - t0 הדפס 'נתונים שנאספו ב {} שניות'. פורמט (עגול (tt, 3))

תְפוּקָה:

נתונים שנאספו תוך 17.927 שניות

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

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

מיון מערך c ++ יורד
# קבל נתונים מקובץ data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # לנתח לזוגות ערכי מפתח key_csv_data = raw_data.map (parse_interaction) # פילטר אינטראקציות מפתח רגילות lambda x: x [0] == 'רגיל.') # אסוף את כל t0 = זמן () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) הדפס 'נתונים שנאספו ב- {} שניות '. פורמט (עגול (tt, 3)) הדפסה' יש {} 'אינטראקציות' רגילות '. פורמט (normal_count)

תְפוּקָה:

נתונים שנאספו תוך 12.485 שניות יש 97278 אינטראקציות רגילות

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

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

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

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