Εισαγωγή στο Spark with Python - PySpark for Beginners



Η Apache Spark έχει αναλάβει τον κόσμο των Big Data & Analytics και η Python είναι μία από τις πιο προσιτές γλώσσες προγραμματισμού που χρησιμοποιούνται στη βιομηχανία σήμερα. Εδώ, λοιπόν, σε αυτό το ιστολόγιο, θα μάθουμε για το Pyspark (σπινθήρα με πύθωνα) για να βρούμε το καλύτερο από τους δύο κόσμους.

είναι ένα από τα πιο ευρέως χρησιμοποιούμενα πλαίσια όσον αφορά το χειρισμό και τη συνεργασία με τα Big Data AND Πύθων είναι μια από τις πιο διαδεδομένες γλώσσες προγραμματισμού για Ανάλυση Δεδομένων, Μηχανική Εκμάθηση και πολλά άλλα. Λοιπόν, γιατί να μην τα χρησιμοποιήσετε μαζί; Εδώ είναι που Spark με τον Python επίσης γνωστός ως PySpark μπαίνει σεοεικόνα.

Με μέσο μισθό 110.000 $ ετησίως για έναν Apache Spark Developer, δεν υπάρχει αμφιβολία ότι το Spark χρησιμοποιείται πολύ στον κλάδο. Εξαιτίαςτουπλούσιο σύνολο βιβλιοθηκών, το Python χρησιμοποιείται απόοΗ πλειοψηφία των επιστημόνων δεδομένων και των ειδικών του Analytics σήμερα. Η ενσωμάτωση της Python με το Spark ήταν ένα σημαντικό δώρο για την κοινότητα. Το Spark αναπτύχθηκε στη γλώσσα Scala, η οποία μοιάζει πολύ με την Java. Συγκεντρώνει τον κώδικα προγράμματος σε bytecode για το JVM για την επεξεργασία μεγάλων δεδομένων. Για να υποστηρίξει το Spark με το python, η κοινότητα του Apache Spark κυκλοφόρησε το PySpark.Από τότε, είναι γνωστό ότι είναι μια από τις πιο περιζήτητες δεξιότητες σε ολόκληρο τον κλάδο λόγω του μεγάλου εύρους των πλεονεκτημάτων που προέκυψαν μετά το συνδυασμό των καλύτερων και των δύο αυτών κόσμων.Σε αυτό το blog Spark with Python, θα συζητήσω τα ακόλουθα θέματα.





Εισαγωγή στο Apache Spark

Το Apache Spark είναι ένα πλαίσιο υπολογιστών συμπλέγματος ανοιχτού κώδικα για επεξεργασία σε πραγματικό χρόνο αναπτύχθηκε από το Apache Software Foundation. Το Spark παρέχει μια διεπαφή για τον προγραμματισμό ολόκληρων ομάδων με έμμεση παραλληλισμός δεδομένων και ανοχή σε σφάλματα.



Παρακάτω είναι μερικά από τα χαρακτηριστικά του Apache Spark που του δίνει πλεονέκτημα έναντι άλλων πλαισίων:

Χαρακτηριστικά Spark - Spark with Python - Edureka

  • Ταχύτητα: Είναι 100x γρηγορότερο από τα παραδοσιακά πλαίσια επεξεργασίας δεδομένων μεγάλης κλίμακας.
  • Ισχυρή προσωρινή αποθήκευση: Το απλό επίπεδο προγραμματισμού παρέχει ισχυρές δυνατότητες προσωρινής αποθήκευσης και αποθήκευσης δίσκου.
  • Ανάπτυξη: Μπορεί να αναπτυχθεί μέσω του Mesos, του Hadoop μέσω του Νήματος ή του cluster manager του Spark.
  • Πραγματικός χρόνος: Πραγματικός χρόνοςυπολογισμός & χαμηλός λανθάνων χρόνος λόγω υπολογισμού στη μνήμη.
  • Πολύγλωσσος: Είναι ένα από τα πιο σημαντικάχαρακτηριστικάαυτού του πλαισίου καθώς μπορεί να προγραμματιστεί σε Scala, Java, Python και R.

Γιατί να πάμε για Python;

Αν και ο Spark σχεδιάστηκε σε scala, που το κάνει σχεδόν 10 φορές πιο γρήγορο από το Python, αλλά το Scala είναι ταχύτερο μόνο όταν το ο αριθμός των πυρήνων που χρησιμοποιούνται είναι μικρότερος . Καθώς οι περισσότερες από τις αναλύσεις και τις διαδικασίες σήμερα απαιτούν μεγάλο αριθμό πυρήνων, το πλεονέκτημα απόδοσης του Scala δεν είναι τόσο μεγάλο.



Για προγραμματιστές η Python είναι συγκριτικά ευκολότερο να μάθω λόγω της σύνταξης και των τυπικών βιβλιοθηκών. Επιπλέον, είναι ένα δυναμικά δακτυλογραφημένη γλώσσα, που σημαίνει ότι τα RDD μπορούν να κρατήσουν αντικείμενα πολλαπλών τύπων.

Αν και η Σκάλα έχει SparkMLlib δεν έχει αρκετές βιβλιοθήκες και εργαλεία για μηχανική εκμάθηση και NLP σκοποί. Επιπλέον, η Scala στερείται οπτικοποίησης δεδομένων.

Εκπαίδευση PySpark | Apache Spark με Python | Έντρεκα

Εγγραφείτε στο κανάλι σας στο YouTube για να λαμβάνετε νέες ενημερώσεις ..!

Ρύθμιση Spark με 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 λόγω των καταπληκτικών χαρακτηριστικών του επεξεργασία στη μνήμη , πολύγλωσσος και γρήγορη επεξεργασία χρησιμοποιούνται από πολλές εταιρείες σε όλο τον κόσμο για διάφορους σκοπούς σε διάφορους κλάδους:

Yahoo χρησιμοποιεί το Apache Spark για τις δυνατότητες της μηχανικής εκμάθησης για να εξατομικεύσει τις ειδήσεις, τις ιστοσελίδες του και επίσης για τις διαφημίσεις στόχευσης Χρησιμοποιούν το Spark με python για να μάθουν τι είδους είδηση ​​- οι χρήστες ενδιαφέρονται να διαβάσουν και να κατηγοριοποιήσουν τις ειδήσεις για να μάθουν τι είδους χρήστες θα ενδιαφερόταν να διαβάσουν κάθε κατηγορία ειδήσεων.

Στο TripAdvisor χρησιμοποιεί το apache spark για να παρέχει συμβουλές σε εκατομμύρια ταξιδιώτες συγκρίνοντας εκατοντάδες ιστότοπους για να βρει τις καλύτερες τιμές ξενοδοχείων για τους πελάτες του. Ο χρόνος που απαιτείται για να διαβάσετε και να επεξεργαστείτε τις κριτικές των ξενοδοχείων σε αναγνώσιμη μορφή γίνεται με τη βοήθεια του Apache Spark.

Μία από τις μεγαλύτερες πλατφόρμες ηλεκτρονικού εμπορίου στον κόσμο Άλιμπαμπα εκτελεί μερικές από τις μεγαλύτερες εργασίες Apache Spark στον κόσμο, προκειμένου να αναλύσει εκατοντάδες petabytes δεδομένων στην πλατφόρμα του ηλεκτρονικού εμπορίου.

PySpark SparkContext και ροή δεδομένων

Μιλώντας για το Spark με την Python, η εργασία με RDDs καθίσταται δυνατή από τη βιβλιοθήκη Py4j. Το PySpark Shell συνδέει το Python API με το σπινθήρα και αρχικοποιεί το Spark Context. Πλαίσιο σπινθήρων είναι η καρδιά κάθε εφαρμογής σπινθήρα.

  1. Το πλαίσιο Spark δημιουργεί εσωτερικές υπηρεσίες και δημιουργεί σύνδεση σε περιβάλλον εκτέλεσης Spark.
  2. Το αντικείμενο sparkcontext στο πρόγραμμα προγράμματος οδήγησης συντονίζει όλη την κατανεμημένη διαδικασία και επιτρέπει την κατανομή πόρων.
  3. Το Cluster Managers παρέχει λογική στους εκτελεστές, οι οποίοι είναι διαδικασία 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)

ΦΙΛΤΡΙΣΜΑ:

Ας υποθέσουμε ότι θέλουμε να μετρήσουμε πόσα φυσιολογικά. αλληλεπιδράσεις που έχουμε στο σύνολο δεδομένων μας. Μπορούμε φίλτρο τα raw_data RDD μας ως εξής.

normal_raw_data = raw_data.filter (lambda x: «κανονικό» σε x)

ΜΕΤΡΩ:

Τώρα μπορούμε μετρώ πόσα στοιχεία έχουμε στη νέα RDD.

από ώρα εισαγωγής χρόνου t0 = ώρα () normal_count = normal_raw_data.count () tt = time () - t0 print 'Υπάρχουν {}' κανονικές 'αλληλεπιδράσεις'. μορφοποίηση (κανονικός_ αριθμός) εκτύπωση 'Ο αριθμός ολοκληρώθηκε σε {} δευτερόλεπτα'. μορφή (στρογγυλό (tt, 3))

Παραγωγή:

Υπάρχουν 97278 «κανονικές» αλληλεπιδράσεις Ο αριθμός ολοκληρώθηκε σε 5,951 δευτερόλεπτα

ΧΑΡΤΟΓΡΑΦΗΣΗ:

Σε αυτόυπόθεσηθέλουμε να διαβάσουμε το αρχείο δεδομένων μας σε μορφή CSV. Μπορούμε να το κάνουμε εφαρμόζοντας μια συνάρτηση λάμδα σε κάθε στοιχείο του RDD ως εξής. Εδώ θα χρησιμοποιήσουμε το μετασχηματισμός χάρτη () και λήψης ().

από pprint εισαγωγή pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Η ανάλυση ολοκληρώθηκε σε {} δευτερόλεπτα '.format (στρογγυλό (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) αποτύπωμα (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', .... U'normal. '])

Η ΣΥΛΛΟΓΗ ΔΡΑΣΗ:

Εδώ πρόκειται να χρησιμοποιήσουμε την ενέργεια συλλογής (). Θα πάρει όλα τα στοιχεία του RDD στη μνήμη. Για το λόγο αυτό, πρέπει να χρησιμοποιείται με προσοχή όταν εργάζεστε με μεγάλες RDD.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Τα δεδομένα συλλέχθηκαν σε {} δευτερόλεπτα'. μορφή (στρογγυλό (tt, 3))

Παραγωγή:

Τα δεδομένα συλλέχθηκαν σε 17.927 δευτερόλεπτα

Αυτό χρειάστηκε περισσότερο από οποιαδήποτε άλλη ενέργεια που χρησιμοποιήσαμε στο παρελθόν, φυσικά. Κάθε κόμβος εργαζομένου Spark που έχει ένα τμήμα του RDD πρέπει να συντονιστεί για να ανακτήσει το μέρος του και στη συνέχεια να μειώσει τα πάντα μαζί.

Ως τελευταίο παράδειγμα που συνδυάζει όλα τα προηγούμενα, θέλουμε να συλλέξουμε όλακανονικόςαλληλεπιδράσεις ως ζεύγη κλειδιού-τιμής.

πώς να κλωνοποιήσετε ένα αντικείμενο σε java
# λήψη δεδομένων από το αρχείο data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # ανάλυση σε ζεύγη κλειδιού-τιμής key_csv_data = raw_data.map (parse_interaction) # φιλτράρισμα αλληλεπιδράσεων κανονικού κλειδιού normal_key_interactions = key_csil_data. lambda x: x [0] == 'normal.') # συλλογή όλων t0 = χρόνος () all_normal = normal_key_interactions.collect () tt = time () - t0 normal_count = len (all_normal) print '.format (στρογγυλή (tt, 3)) εκτύπωση' Υπάρχουν {} 'κανονικές' αλληλεπιδράσεις '. μορφή (normal_count)

Παραγωγή:

Τα δεδομένα συλλέχθηκαν σε 12.485 δευτερόλεπτα Υπάρχουν 97278 φυσιολογικές αλληλεπιδράσεις

Αυτό είναι, παιδιά!

Ελπίζω να απολαύσατε αυτό το blog Spark με Python. Εάν το διαβάζετε, Συγχαρητήρια! Δεν είστε πλέον αρχάριος στο PySpark. Δοκιμάστε αυτό το απλό παράδειγμα στα συστήματά σας τώρα.

Τώρα που έχετε κατανοήσει τα βασικά του PySpark, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων εκπαιδευόμενων σε όλο τον κόσμο. Το Edureka's Εκπαίδευση πιστοποίησης Python Spark χρησιμοποιώντας το PySpark έχει σχεδιαστεί για να σας παρέχει τις γνώσεις και τις δεξιότητες που απαιτούνται για να γίνετε ένας επιτυχημένος προγραμματιστής Spark χρησιμοποιώντας το Python και να σας προετοιμάσει για τις εξετάσεις πιστοποίησης Cloudera Hadoop και Spark Developer (CCA175).

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας.