Εκμάθηση Hadoop Pig: Τι είναι το Apache Pig; Archiδομή, Παράδειγμα

⚡ Έξυπνη Σύνοψη

Το Apache Pig είναι μια πλατφόρμα υψηλού επιπέδου για την ανάλυση μεγάλων συνόλων δεδομένων στο Hadoop, συνδυάζοντας τη γλώσσα ροής δεδομένων Pig Latin με ένα περιβάλλον εκτέλεσης που μεταγλωττίζει κάθε σενάριο σε MapReduce, Tez ή Spark εργασίες αυτόματα.

  • 🔘 Δύο στοιχεία: Η Pig Latin παρέχει τη γλώσσα και το περιβάλλον εκτέλεσης Pig μετατρέπει κάθε σενάριο σε εργασίες συμπλέγματος.
  • ☑️ Τύποι εκτέλεσης: Οι τρέχουσες εκδόσεις προσφέρουν έξι exectypes που επιλέγονται με τη σημαία -x, από local έως Spark.
  • Απαιτούμενα: Μια λειτουργική εγκατάσταση Hadoop συν Java, με εξαγωγή των HADOOP_HOME και JAVA_HOME, πρέπει να υπάρχει πρώτα.
  • 🧪 Λειτουργικό παράδειγμα: Ένα σενάριο τεσσάρων δηλώσεων φορτώνει το SalesJan2009.csv, το ομαδοποιεί ανά χώρα και αποθηκεύει τον αριθμό των προϊόντων.
  • Μοντέλο δεδομένων: Οι βαθμωτοί τύποι συν η πλειάδα, η τσάντα και ο χάρτης επιτρέπουν στο Pig να διαβάζει ένθετα και χαλαρά δομημένα αρχεία.
  • 📈 Τρέχουσα έκδοση: Η έκδοση Apache Pig 0.18.0 κυκλοφόρησε τον Σεπτέμβριο του 2025 με τα Hadoop 3, Tez, Spark και Python 3 υποστήριξη.

Εκπαιδευτικό σεμινάριο Hadoop Pig που καλύπτει την αρχιτεκτονική, την εγκατάσταση και ένα επεξεργασμένο παράδειγμα Pig Latin.

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

Τι είναι το Apache Pig;

Το γουρούνι είναι υψηλού επιπέδου γλώσσα προγραμματισμού χρήσιμο για την ανάλυση μεγάλων συνόλων δεδομένων. Το Pig ήταν αποτέλεσμα της προσπάθειας ανάπτυξης στο Yahoo!

Σε ένα πλαίσιο MapReduce, τα προγράμματα πρέπει να μεταφραστούν σε μια σειρά από στάδια Map και Reduce. Ωστόσο, αυτό δεν είναι ένα μοντέλο προγραμματισμού με το οποίο είναι εξοικειωμένοι οι αναλυτές δεδομένων. Έτσι, για να γεφυρωθεί αυτό το κενό, ένα abstracη ενορία που ονομάζεται Χοίρος χτίστηκε πάνω σε Hadoop.

Το Apache Pig επιτρέπει στους ανθρώπους να επικεντρώνονται περισσότερο στην ανάλυση μαζικών συνόλων δεδομένων και να αφιερώνουν λιγότερο χρόνο γράφοντας προγράμματα MapReduce. Όπως και τα γουρούνια, που τρώνε τα πάντα, η γλώσσα προγραμματισμού Apache Pig έχει σχεδιαστεί για να λειτουργεί με οποιοδήποτε είδος δεδομένων. Γι' αυτό και το όνομα, Pig! Η μασκότ του έργου παρακάτω, υπογραμμίζει το ίδιο σημείο.

Γουρουνάκι κινουμένων σχεδίων που χρησιμοποιείται ως μασκότ του Apache Pig, που δείχνει ότι το Pig επεξεργάζεται κάθε είδους δεδομένα.

Το έργο είναι ακόμα ενεργό. Apache Pig 0.18.0 κυκλοφόρησε στις 15 Σεπτεμβρίου 2025 και προσθέτει υποστήριξη για Hadoop 3, Tez 0.10, Hive 3, Spark 3, HBase 2 και Python το 3, σύμφωνα με την Σελίδα κυκλοφορίας του Apache PigΗ παρακάτω αναλυτική παρουσίαση γράφτηκε αρχικά στην πολύ παλαιότερη γραμμή 0.12.1, επομένως μερικά βήματα φέρουν μια σημείωση όπου μια τρέχουσα έκδοση συμπεριφέρεται διαφορετικά.

Χοίρος Archiδομή

Η αρχιτεκτονική του Pig αποτελείται από δύο στοιχεία:

  1. Γουρουνάκι λατινικό, που είναι μια γλώσσα
  2. Ένα περιβάλλον χρόνου εκτέλεσης, για την εκτέλεση προγραμμάτων Pig Latin.

Ένα πρόγραμμα Pig Latin αποτελείται από μια σειρά λειτουργιών ή μετασχηματισμών που εφαρμόζονται στα δεδομένα εισόδου για την παραγωγή εξόδου. Αυτές οι λειτουργίες περιγράφουν μια ροή δεδομένων η οποία μεταφράζεται σε μια εκτελέσιμη αναπαράσταση από το περιβάλλον εκτέλεσης Hadoop Pig. Παρακάτω, τα αποτελέσματα αυτών των μετασχηματισμών είναι μια σειρά από ΜΕΙΩΣΗ ΧΑΡΤΗ εργασίες για τις οποίες ένας προγραμματιστής δεν γνωρίζει. Έτσι, κατά κάποιο τρόπο, το Pig στο Hadoop επιτρέπει στον προγραμματιστή να επικεντρωθεί στα δεδομένα και όχι στη φύση της εκτέλεσης.

Η Pig Latin είναι μια σχετικά άκαμπτη γλώσσα που χρησιμοποιεί γνωστές λέξεις-κλειδιά από την επεξεργασία δεδομένων, π.χ. Join (Ένταξη), Group (Ομαδοποίηση) και Filter (Φίλτρο). Το παρακάτω διάγραμμα tracΑποτελεί ένα σενάριο από το κέλυφος Grunt μέσω του αναλυτή, του βελτιστοποιητή και του μεταγλωττιστή στο δρόμο του προς τη μηχανή εκτέλεσης.

Διάγραμμα αρχιτεκτονικής Apache Pig που δείχνει τα λατινικά σενάρια Pig που περνούν μέσω του αναλυτή, του βελτιστοποιητή και του μεταγλωττιστή στη μηχανή εκτέλεσης.

Λειτουργίες εκτέλεσης

Το Pig στο Hadoop έχει δύο λειτουργίες εκτέλεσης και η αναλυτική παρουσίαση εγκατάστασης παρακάτω τις χρησιμοποιεί και τις δύο:

  1. Τοπική λειτουργία: Σε αυτήν τη λειτουργία, η γλώσσα Hadoop Pig εκτελείται σε ένα μόνο FMV και χρησιμοποιεί το τοπικό σύστημα αρχείων. Αυτή η λειτουργία είναι κατάλληλη μόνο για ανάλυση μικρών συνόλων δεδομένων χρησιμοποιώντας το Pig στο Hadoop.
  2. Λειτουργία MapReduce: Σε αυτήν τη λειτουργία, τα ερωτήματα που είναι γραμμένα σε Pig Latin μεταφράζονται σε εργασίες MapReduce και εκτελούνται σε ένα σύμπλεγμα Hadoop (το σύμπλεγμα μπορεί να είναι ψευδο-κατανεμημένο ή πλήρως κατανεμημένο). Η λειτουργία MapReduce με ένα πλήρως κατανεμημένο σύμπλεγμα είναι χρήσιμη για την εκτέλεση του Pig σε μεγάλα σύνολα δεδομένων.

Αυτά τα δύο αποτελούν το κλασικό ζευγάρι. Οι τρέχουσες εκδόσεις παρουσιάζουν στην πραγματικότητα έξι τύπους εκτέλεσης ή exectypes, καθένας από τους οποίους επιλέγεται με το ίδιο -x σημαία, όπως τεκμηριώνεται στην Οδηγός έναρξης για το Pig 0.18.0.

Εκτελεστικός τύπος εντολή Πού τρέχει η εργασία
τοπικός γουρούνι -x τοπικό Μία μόνο JVM έναντι του τοπικού συστήματος αρχείων
Tez local γουρούνι -x tez_local Μία μόνο JVM που χρησιμοποιεί το runtime του Tez (πειραματικό)
Spark τοπικός γουρούνι -x spark_local Μία μόνο JVM που χρησιμοποιεί το Spark χρόνος εκτέλεσης (πειραματικό)
ΜΕΙΩΣΗ ΧΑΡΤΗ γουρούνι ή γουρούνι -x mapreduce Ένα σύμπλεγμα Hadoop με HDFS. Αυτή είναι η προεπιλεγμένη ρύθμιση.
Tez γουρούνι -x tez Ένα σύμπλεγμα Hadoop που εκτελεί τη μηχανή Tez
Spark γουρούνι -x σπίθα A Spark, YARN ή Mesos cluster με HDFS

Τύποι δεδομένων Pig Latin και Operaκορμοί

Πριν γράψετε ένα σενάριο, είναι χρήσιμο να γνωρίζετε τι μπορεί να αποθηκεύσει το Pig και τι μπορεί να κάνει σε αυτό. Το μοντέλο δεδομένων είναι πλήρως ενσωματωμένο, κάτι που επιτρέπει στο Pig να διαβάζει αρχεία καταγραφής και άλλα χαλαρά δομημένα δεδομένα εισόδου που ένας σχεσιακός πίνακας θα απέρριπτε.

Το Pig Latin προσφέρει δύο οικογένειες τύπων:

  • Βαθμωτοί τύποι: int, long, float, double, chararray, bytearray, boolean, datetime, biginteger και bigdecimalΤο παράδειγμα σεναρίου αργότερα δηλώνει κάθε στήλη ως chararray.
  • Σύνθετοι τύποι: a πλειάδα είναι ένα διατεταγμένο σύνολο πεδίων και συμπεριφέρεται σαν γραμμή· ένα τσάντα είναι μια μη διατεταγμένη συλλογή πλειάδων και συμπεριφέρεται σαν πίνακας. χάρτη είναι ένα σύνολο ζευγών κλειδιών και τιμών των οποίων το κλειδί πρέπει να είναι ένα chararray.

Οι χειριστές αναλαμβάνουν έναν μικρό αριθμό θέσεων εργασίας και μια χούφτα από αυτούς φέρουν εις πέρας σχεδόν κάθε αγωγό:

OperaTor Τι κάνει
ΦΟΡΤΩΣΗ / ΑΠΟΘΗΚΕΥΣΗ Διαβάστε μια σχέση από το σύστημα αρχείων και γράψτε πίσω το αποτέλεσμα
FILTER Διατηρήστε μόνο τις πλειάδες που ταιριάζουν με μια συνθήκη
FOREAC … ΔΗΜΙΟΥΡΓΙΑ Εργασία στήλη προς στήλη, δημιουργία νέων πεδίων
ΟΜΑΔΑ / ΣΥΝΟΜΑΔΑ Ομαδοποίηση μίας σχέσης, ή δύο ή περισσότερων σχέσεων, με βάση ένα κλειδί
Ενώνω Συνδυάστε σχέσεις με μια εσωτερική ή εξωτερική ένωση
ΕΝΩΣΗ / ΔΙΑΧΩΡΙΣΜΟΣ Συγχώνευση σχέσεων ή διαμέριση μίας σε περισσότερες
ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ / ΔΙΑΦΟΡΕΤΙΚΟ / ΟΡΙΟ Ταξινόμηση, κατάργηση διπλότυπων και περιορισμός του αριθμού των πλειάδων
ΑΠΟΡΡΙΨΗ / ΠΕΡΙΓΡΑΦΗ / ΕΞΗΓΗΣΗ / ΕΙΚΟΝΟΓΡΑΦΗΣΗ Επιθεώρηση αποτελεσμάτων, σχημάτων, σχεδίων εκτέλεσης και δειγματοληπτικών εκτελέσεων

Οι τέσσερις χειριστές επιθεώρησης έχουν επίσης συντομεύσεις Grunt, κάτι που εξοικονομεί χρόνο.ping κατά τη διάρκεια της αποσφαλμάτωσης: \d για ΑΠΟΡΡΙΨΗ, \de για ΠΕΡΙΓΡΑΦΗ, \e για ΕΞΗΓΗΣΗ και \i για το ILLUSTRATE.

Προϋποθέσεις

Το Pig είναι ένα εργαλείο που λειτουργεί από την πλευρά του πελάτη. Αναλύει ένα σενάριο, σχεδιάζει την εργασία και υποβάλλει εργασίες, αλλά δεν παρέχει χώρο αποθήκευσης ή δικό του σύμπλεγμα, επομένως πρέπει πρώτα να υπάρχει μια λειτουργική εγκατάσταση Hadoop. Η λίστα απαιτήσεων του Apache είναι σύντομη.

Συστατικό Απαίτηση Γιατί είναι απαραίτητο
Hadoop Hadoop 2.x ή 3.x, με εξαγωγή του HADOOP_HOME Παρέχει HDFS και τη μηχανή εκτέλεσης. Χωρίς το HADOOP_HOME, το Pig 0.18.0 επιστρέφει σε ένα ενσωματωμένο Hadoop 2.7.3.
Java Java 1.7 ή νεότερη έκδοση, με το JAVA_HOME ορισμένο στη ρίζα της εγκατάστασης Οι δαίμονες Pig and the Hadoop είναι Java προγράμματα
Python (Προαιρετικό) Python 2.7 Απαιτείται μόνο για streaming Python λειτουργίες που ορίζονται από το χρήστη
Μυρμήγκι (προαιρετικό) Μυρμήγκι 1.8 Απαιτείται μόνο κατά την κατασκευή ή την επαναμεταγλώττιση του Pig από τον πηγαίο κώδικα

Δύο πρακτικά σημεία βρίσκονται δίπλα σε αυτήν τη λίστα. Πρώτον, εκτελέστε τα πάντα ως χρήστης Linux που έχει ήδη έναν αρχικό κατάλογο στο ΚΑΕ και άδεια εγγραφής σε αυτό· αυτό το σεμινάριο χρησιμοποιεί hduser, ο λογαριασμός που δημιουργήθηκε κατά την εγκατάσταση του Hadoop. Δεύτερον, ξεκινήστε το σύμπλεγμα πριν από την εκκίνηση του Pig σε λειτουργία MapReduce, επειδή το Pig αποτυγχάνει αμέσως εάν τα NameNode και ResourceManager είναι εκτός λειτουργίας. Εάν το Hadoop δεν είναι ακόμα εγκατεστημένο, επεξεργαστείτε τα παρακάτω. πώς να εγκαταστήσετε το Hadoop πρώτη.

Πώς να κατεβάσετε και να εγκαταστήσετε το Pig

Τώρα σε αυτό το σεμινάριο Apache Pig, θα μάθουμε πώς να κατεβάσετε και να εγκαταστήσετε το Pig:

Πριν ξεκινήσουμε την πραγματική διαδικασία, βεβαιωθείτε ότι έχετε εγκαταστήσει το Hadoop. Αλλάξτε τον χρήστη σε 'hduser' (το αναγνωριστικό που χρησιμοποιήθηκε κατά τη ρύθμιση παραμέτρων του Hadoop. Μπορείτε να μεταβείτε στο αναγνωριστικό χρήστη που χρησιμοποιήθηκε κατά τη ρύθμιση παραμέτρων του Hadoop).

Εντολή τερματικού που αλλάζει τον χρήστη Linux σε hduser πριν ξεκινήσει η εγκατάσταση του Pig

Βήμα 1) Κατεβάστε την τελευταία σταθερή έκδοση του Pig Hadoop από οποιαδήποτε από τις διαθέσιμες τοποθεσίες mirror στη διεύθυνση

https://pig.apache.org/releases.html

Επιλέξτε το αρχείο tar.gz (και όχι το src.tar.gz) για λήψη, όπως φαίνεται παρακάτω.

Το Apache Pig κυκλοφορεί σελίδα λήψης με την διανομή tar.gz για να επιλέξετε

Βήμα 2) Μόλις ολοκληρωθεί η λήψη, μεταβείτε στον κατάλογο που περιέχει το ληφθέν αρχείο tar και μετακινήστε το αρχείο tar στη θέση όπου θέλετε να εγκαταστήσετε το Pig Hadoop. Σε αυτήν την περίπτωση, θα μετακινηθούμε στο /usr/local.

Το τερματικό μετακινεί το ληφθέν αρχείο tar Pig στον κατάλογο /usr/local

Μετακινηθείτε στον κατάλογο που θα περιέχει τα αρχεία Pig Hadoop.

cd /usr/local

Extracτα περιεχόμενα του αρχείου tar όπως παρακάτω.

sudo tar -xvf pig-0.12.1.tar.gz

Τερματικό extracting στο αρχείο Pig με την εντολή sudo tar -xvf

Βήμα 3) Τροποποιήστε το ~/.bashrc για να προσθέσετε μεταβλητές περιβάλλοντος που σχετίζονται με το Pig.

Ανοίξτε το αρχείο ~/.bashrc σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου της επιλογής σας και κάντε τις παρακάτω τροποποιήσεις.

export PIG_HOME=<Installation directory of Pig>
export PATH=$PIG_HOME/bin:$HADOOP_HOME/bin:$PATH

Πρόγραμμα επεξεργασίας κειμένου που εμφανίζει τις γραμμές εξαγωγής PIG_HOME και PATH που προστέθηκαν στο αρχείο bashrc

Βήμα 4) Τώρα, ορίστε την πηγή αυτής της διαμόρφωσης περιβάλλοντος χρησιμοποιώντας την παρακάτω εντολή.

. ~/.bashrc

Λήψη αρχείου bashrc από το τερματικό, ώστε να τεθούν σε ισχύ οι νέες μεταβλητές περιβάλλοντος Pig

Βήμα 5) Πρέπει να επαναμεταγλωττίσουμε το Pig για να υποστηρίζει το Hadoop 2.2.0.

Ακολουθούν τα βήματα για να το κάνετε αυτό.

Μεταβείτε στον αρχικό κατάλογο Pig.

cd $PIG_HOME

Εγκαταστήστε το Ant.

sudo apt-get install ant

Εγκατάσταση Apache Ant από τερματικό με apt-get για την προετοιμασία της επαναμεταγλώττισης του Pig

Σημείωση: Η λήψη θα ξεκινήσει και θα διαρκέσει ανάλογα με την ταχύτητα του διαδικτύου σας.

Επαναμεταγλώττιση Pig.

sudo ant clean jar-all -Dhadoopversion=23

Τερματικό που εκτελεί τον στόχο Ant που επαναμεταγλωττίζει το Pig για τη γραμμή Hadoop 2

Λάβετε υπόψη ότι σε αυτήν τη διαδικασία αναμεταγλώττισης λαμβάνονται πολλά στοιχεία, επομένως το σύστημα θα πρέπει να είναι συνδεδεμένο στο διαδίκτυο.

Επίσης, σε περίπτωση που αυτή η διαδικασία κολλήσει κάπου και δεν δείτε καμία κίνηση στη γραμμή εντολών για περισσότερο από 20 λεπτά, πατήστε Ctrl + c και εκτελέστε ξανά την ίδια εντολή.

Στην περίπτωσή μας, χρειάζονται 20 λεπτά.

Έξοδος τερματικού από την επαναμεταγλώττιση Pig, η οποία διήρκεσε περίπου είκοσι λεπτά σε αυτό το παράδειγμα

Αυτό το βήμα αναμεταγλώττισης ανήκει στην εποχή 0.12.1, όταν τα jar που στάλθηκαν κατασκευάστηκαν με βάση το Hadoop 1 και το -Dhadoopversion=23 Η flag άλλαξε την έκδοση Ant στη γραμμή Hadoop 0.23 και 2.x. Το Apache Pig 0.18.0 διαθέτει δυαδικά αρχεία που εκτελούνται ήδη σε Hadoop 2.7 και νεότερες εκδόσεις, καθώς και σε Hadoop 3, επομένως σε μια τρέχουσα έκδοση μπορείτε κανονικά να αποσυμπιέσετε το tarball και να μεταβείτε απευθείας στην παρακάτω δοκιμή.

Βήμα 6) Δοκιμάστε την εγκατάσταση του Pig χρησιμοποιώντας την εντολή

pig -help

Έξοδος της εντολής pig -help που παραθέτει τις επιλογές γραμμής εντολών Pig μετά την εγκατάσταση

Παράδειγμα σεναρίου Pig

Με εγκατεστημένο το Pig, το υπόλοιπο αυτού του σεμιναρίου Apache Pig εκτελεί ένα πλήρες σενάριο. Θα χρησιμοποιήσουμε τα Pig Scripts για να βρούμε τον αριθμό των προϊόντων που πωλούνται σε κάθε χώρα.

Είσοδος: Το σύνολο δεδομένων εισόδου μας είναι ένα αρχείο CSV, SalesJan2009.csv.

Βήμα 1) Ξεκινήστε το Hadoop.

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Βήμα 2) Το Pig in Big Data λαμβάνει ένα αρχείο από το HDFS σε λειτουργία MapReduce και αποθηκεύει τα αποτελέσματα πίσω στο HDFS.

Αντιγράψτε το αρχείο SalesJan2009.csv (που είναι αποθηκευμένο στο τοπικό σύστημα αρχείων στη διεύθυνση ~/input/SalesJan2009.csv) στον αρχικό κατάλογο HDFS (Hadoop Distributed File System).

Εδώ σε αυτό το παράδειγμα Apache Pig, το αρχείο βρίσκεται στον φάκελο input. Εάν το αρχείο είναι αποθηκευμένο σε κάποια άλλη τοποθεσία, δώστε αυτό το όνομα.

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/input/SalesJan2009.csv /

Το τερματικό αντιγράφει το SalesJan2009.csv από το τοπικό σύστημα αρχείων στο HDFS

Επαληθεύστε εάν το αρχείο αντιγράφηκε όντως ή όχι.

$HADOOP_HOME/bin/hdfs dfs -ls /

Λίστα ρίζας HDFS που επιβεβαιώνει ότι το αρχείο SalesJan2009.csv αντιγράφηκε

Βήμα 3) Διαμόρφωση χοίρου.

Αρχικά, μεταβείτε στο $PIG_HOME/conf και κρατήστε ένα αντίγραφο του αρχικού αρχείου ιδιοτήτων.

cd $PIG_HOME/conf
sudo cp pig.properties pig.properties.original

Δημιουργία αντιγράφων ασφαλείας του pig.properties από το τερματικό πριν από την επεξεργασία της διαμόρφωσης Pig

Ανοίξτε το pig.properties χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου της επιλογής σας και καθορίστε τη διαδρομή του αρχείου καταγραφής χρησιμοποιώντας το pig.logfile.

sudo gedit pig.properties

Το αρχείο διαμόρφωσης pig.properties ανοίγει σε ένα πρόγραμμα επεξεργασίας κειμένου στη ρύθμιση αρχείου καταγραφής

Το καταγραφικό θα χρησιμοποιήσει αυτό το αρχείο για να καταγράψει σφάλματα.

Βήμα 4) Εκτελέστε την εντολή 'pig', η οποία θα ξεκινήσει τη γραμμή εντολών Pig, ένα διαδραστικό κέλυφος για ερωτήματα Pig.

pig

Το διαδραστικό κέλυφος Grunt ξεκινά μετά την εκτέλεση της εντολής pig

Βήμα 5) Στη γραμμή εντολών Grunt για το Pig, εκτελέστε τις παρακάτω εντολές Pig με τη σειρά.

— Α. Φορτώστε το αρχείο που περιέχει δεδομένα.

salesTable = LOAD '/SalesJan2009.csv' USING PigStorage(',') AS (Transaction_date:chararray,Product:chararray,Price:chararray,Payment_Type:chararray,Name:chararray,City:chararray,State:chararray,Country:chararray,Account_Created:chararray,Last_Login:chararray,Latitude:chararray,Longitude:chararray);

Πατήστε Enter μετά από αυτήν την εντολή.

Το κέλυφος Grunt δέχεται την πρόταση LOAD που διαβάζει το CSV πωλήσεων σε μια σχέση

— Β. Ομαδοποίηση δεδομένων ανά πεδίο Χώρα.

GroupByCountry = GROUP salesTable BY Country;

Το Grunt shell δέχεται την πρόταση GROUP που ομαδοποιεί τη σχέση πωλήσεων ανά χώρα.

— Γ. Για κάθε πλειάδα στο 'GroupByCountry', δημιουργήστε την προκύπτουσα συμβολοσειρά της μορφής Όνομα Χώρας: Αριθμός πωληθέντων προϊόντων.

CountByCountry = FOREACH GroupByCountry GENERATE CONCAT((chararray)$0,CONCAT(':',(chararray)COUNT($1)));

Πατήστε Enter μετά από αυτήν την εντολή.

Το κέλυφος Grunt δέχεται την εντολή FOREACH GENERATE που δημιουργεί τη συμβολοσειρά count και count.

— Δ. Αποθηκεύστε τα αποτελέσματα της ροής δεδομένων στον κατάλογο 'pig_output_sales' στο HDFS.

STORE CountByCountry INTO 'pig_output_sales' USING PigStorage('\t');

Το κέλυφος Grunt δέχεται την πρόταση STORE που γράφει την έξοδο στον κατάλογο pig_output_sales

Αυτή η εντολή θα χρειαστεί λίγο χρόνο για να εκτελεστεί. Μόλις ολοκληρωθεί, θα πρέπει να δείτε την ακόλουθη οθόνη.

Η οθόνη κονσόλας εμφανίζεται μόλις ολοκληρωθεί η εκτέλεση της εντολής STORE

Βήμα 6) Το αποτέλεσμα μπορεί να φανεί μέσω της διεπαφής εντολών ως εξής:

$HADOOP_HOME/bin/hdfs dfs -cat pig_output_sales/part-r-00000

Έξοδος γραμμής εντολών του αρχείου αποτελεσμάτων που παραθέτει τα προϊόντα που πωλούνται ανά χώρα

Τα αποτελέσματα μπορούν επίσης να προβληθούν μέσω μιας διεπαφής ιστού.

Ανοίξτε το http://localhost:50070/ σε ένα πρόγραμμα περιήγησης ιστού.

Η θύρα 50070 είναι το web UI του NameNode στο Hadoop 2. Το Hadoop 3 μετέφερε την ίδια σελίδα στη θύρα 9870, επομένως χρησιμοποιήστε αυτήν τη διεύθυνση εάν το σύμπλεγμά σας εκτελεί το Hadoop 3.

Διεπαφή ιστού Hadoop NameNode που χρησιμοποιείται για την περιήγηση στο σύστημα αρχείων HDFS

Τώρα επιλέξτε «Περιήγηση στο σύστημα αρχείων» και μεταβείτε στο /user/hduser/pig_output_sales.

Πρόγραμμα περιήγησης HDFS που εμφανίζει τον κατάλογο pig_output_sales κάτω από την αρχική διαδρομή hduser

Ανοίξτε το part-r-00000 για να διαβάσετε τα ζεύγη χώρας και product-count που παρήγαγε το σενάριο.

Προβολή προγράμματος περιήγησης του αρχείου εξόδου part-r-00000 με ζεύγη χωρών και αριθμών προϊόντων

Apache Pig εναντίον Hive εναντίον MapReduce

Το Pig σπάνια αξιολογείται μόνο του. Το συνηθισμένο ερώτημα είναι αν μια θέση εργασίας ανήκει στο Pig, στο Κυψέλη ή σε ένα χειρόγραφο πρόγραμμα MapReduce, αφού και τα τρία καταλήγουν ως εργασίες στο ίδιο σύμπλεγμα.

Άποψη MapReduce (Java) Apache χοίρων Κυψέλη Apache
περιβάλλον λειτουργίας Java API Pig Latin, μια γλώσσα σεναρίων ροής δεδομένων HiveQL, μια διάλεκτος SQL
Επίπεδο κοιλιακώνtracσμού Χαμηλός Μέτριας Δυσκολίας Ψηλά
Τυπικός χρήστης Java προγραμματιστή Μηχανικός δεδομένων ή ερευνητής Αναλυτής με εξοικείωση με την SQL
Δεδομένα που ταιριάζουν Οτιδήποτε, χειριζόμενο χειροκίνητα Δομημένο και ημιδομημένο· το σχήμα είναι προαιρετικό κατά τον χρόνο φόρτωσης Δομημένοι πίνακες που έχουν καταχωρηθεί σε μετα-αποθετήριο
Code τόμος Οι περισσότερες γραμμές Λιγότερες γραμμές Λιγότερες γραμμές για ένα ερώτημα
Εκτελείται ως Μια εργασία MapReduce Μεταγλωττίζεται σε MapReduce, Tez ή Spark θέσεις εργασίας Μεταγλωττίζεται σε MapReduce, Tez ή Spark θέσεις εργασίας
καλύτερα στο Πλήρης έλεγχος και προσαρμοσμένη λογική Αγωγοί ETL πολλαπλών σταδίων Ad hoc ερωτήματα και αναφορές

Στην πράξη, ο διαχωρισμός είναι απλός. Επιλέξτε το Hive όταν τα δεδομένα μοιάζουν ήδη με πίνακα και η ερώτηση μοιάζει με SQL. Επιλέξτε το Pig όταν η είσοδος είναι ακατάστατη, όταν η διοχέτευση είναι μια αλυσίδα μετασχηματισμών και όχι ένα μόνο ερώτημα ή όταν το ίδιο σενάριο πρέπει να διακλαδωθεί και να επανασυνδεθεί. Επιλέξτε το MapReduce μόνο όταν ούτε το abstracΗ ση μπορεί να εκφράσει τη λογική, επειδή ο αριθμός των γραμμών αυξάνεται γρήγορα.

Ο χοίρος κάθεται επίσης άνετα δίπλα στο υπόλοιπο οικοσύστημα. Sqoop και Flume προσγειώστε τα ακατέργαστα δεδομένα, το Pig ή το Hive τα διαμορφώνουν και ένας χρονοπρογραμματιστής όπως Απάτσι Όουζι συνδέστε τα βήματα σε μια επαναλήψιμη αγωγό. Για μια ευρύτερη εικόνα του πού ταιριάζουν αυτά τα εργαλεία, ανατρέξτε στον οδηγό για μεγάλα δεδομένα και η συλλογή των μεγάλα εργαλεία δεδομένων; για μια εμπορική εναλλακτική λύση ETL στα χειρόγραφα σενάρια, βλ. Τάλεντ.

Συχνές Ερωτήσεις

Ναι. Το Apache Pig 0.18.0 κυκλοφόρησε στις 15 Σεπτεμβρίου 2025 και έφερε υποστήριξη για Hadoop 3, Tez 0.10, Hive 3, Spark 3, HBase 2 και Python 3. Η ανάπτυξη είναι πιο αργή από ό,τι στα χρόνια της Yahoo!, αλλά το έργο δεν έχει αποσυρθεί.

Οι βοηθοί τεχνητής νοημοσύνης σχεδιάζουν τη λογική μετασχηματισμού από μια απλή περιγραφή, προτείνουν κλειδιά σύνδεσης, επισημαίνουν την απόκλιση σχήματος μεταξύ εκτελέσεων και συνοψίζουν τα αρχεία καταγραφής συμπλέγματος σε μια πιθανή αιτία. Αντιμετωπίζουν το αποτέλεσμα ως ένα πρώτο προσχέδιο που χρειάζεται ακόμη δημιουργία προφίλ σε σχέση με πραγματικά δεδομένα.

Το Copilot παράγει γρήγορα εύλογα Pig Latin επειδή η σύνταξη αναπαρίσταται καλά σε δημόσια αποθετήρια. Επινοεί ονόματα συναρτήσεων και θέσεις πεδίων που δεν ταιριάζουν, επομένως εκτελέστε τις συναρτήσεις DESCRIBE και ILLUSTRATE σε ένα δείγμα πριν εμπιστευτείτε ένα δημιουργημένο σενάριο.

Το Pig εκτελείται μόνο όταν μια εντολή επιβάλλει την υλοποίηση. Μια αλυσίδα εντολών LOAD και FOREACH επικυρώνεται, αλλά δεν εκτελείται ποτέ μέχρι να ακολουθήσει μια εντολή DUMP ή STORE, επομένως ένα σενάριο που τερματίζεται μετά από έναν μετασχηματισμό τερματίζεται σιωπηλά.

Η συνάρτηση DUMP εκτυπώνει μια σχέση με το τερματικό και προορίζεται για δοκιμή. Η συνάρτηση STORE γράφει τη σχέση με το σύστημα αρχείων μέσω μιας συνάρτησης αποθήκευσης, όπως η PigStorage. Τα σενάρια παραγωγής θα πρέπει πάντα να τελειώνουν με STORE.

Όχι. Η ρήτρα AS είναι προαιρετική. Χωρίς αυτήν, κάθε πεδίο φορτώνεται ως bytearray και αναφέρεται κατά θέση, όπως $0 και $1. Η δήλωση ενός σχήματος απλώς καθιστά τα σενάρια αναγνώσιμα και επιτρέπει στο Pig να κάνει έλεγχο τύπου νωρίτερα.

Οι περισσότεροι νέοι αγωγοί ξεκινούν στις Spark, το οποίο διαθέτει μια μεγαλύτερη κοινότητα και πλουσιότερες βιβλιοθήκες. Το Pig παραμένει εύχρηστο όπου υπάρχουν ήδη σενάρια, όπου η ομάδα προτιμά μια σύνταξη ροής δεδομένων ή όπου το Pig εκτελείται σε Spark μέσω του εξεκτύπου σπινθήρα.

Το Sqoop εισάγει σχεσιακούς πίνακες και δεδομένα καταγραφής ροών Flume σε HDFS. Στη συνέχεια, το Pig μετασχηματίζει ό,τι έχει προσγειωθεί. Το Oozie αλυσιδώνει τα βήματα εισαγωγής, μετασχηματισμού και εξαγωγής σε μία προγραμματισμένη ροή εργασίας, έτσι ώστε η διοχέτευση να επαναλαμβάνεται χωρίς χειροκίνητες εκτελέσεις.

Συνοψίστε αυτήν την ανάρτηση με: