Hive ETL: Φόρτωση παραδειγμάτων δεδομένων JSON, XML, κειμένου
⚡ Έξυπνη Σύνοψη
Το Hive ETL μετατρέπει αρχεία κειμένου, XML και JSON σε πίνακες με δυνατότητα αναζήτησης, φορτώνοντάς τα στο Hive και σε άλλα.tracΜετατροπή τιμών με xpath() και get_json_object(), δίνοντας στους αναλυτές μια διεπαφή SQL πάνω από ημι-δομημένα δεδομένα Hadoop.
Hive ως εργαλείο ETL και αποθήκευσης δεδομένων πάνω από το Hadoop Το οικοσύστημα παρέχει λειτουργίες όπως μοντελοποίηση δεδομένων, χειρισμό δεδομένων, επεξεργασία δεδομένων και υποβολή ερωτημάτων δεδομένων.tracΗ λειτουργία στο Hive σημαίνει τη δημιουργία πινάκων στο Hive και τη φόρτωση δομημένων και ημιδομημένων δεδομένων, καθώς και την υποβολή ερωτημάτων σε δεδομένα με βάση τις απαιτήσεις.
Για μαζική επεξεργασία, θα γράψουμε προσαρμοσμένα σενάρια χρησιμοποιώντας προσαρμοσμένο map και reduce σενάρια σε μια γλώσσα scripting. Παρέχει ένα SQL όπως το περιβάλλον και η υποστήριξη για εύκολη αναζήτηση.
Εργασία με δομημένα δεδομένα χρησιμοποιώντας το Hive
Δομημένα δεδομένα σημαίνουν ότι τα δεδομένα έχουν τη σωστή μορφή γραμμών και στηλών. Αυτό μοιάζει περισσότερο με RDBMS δεδομένα με κατάλληλες γραμμές και στήλες.
Εδώ θα φορτώσουμε δομημένα δεδομένα που υπάρχουν σε αρχεία κειμένου στο Hive.
Βήμα 1) Σε αυτό το βήμα δημιουργούμε τον πίνακα "employees_guru" με ονόματα στηλών όπως ID, Όνομα, Ηλικία, Διεύθυνση, Μισθός και Τμήμα των υπαλλήλων με τύπους δεδομένων.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Δημιουργία πίνακα "employees_guru"
- Φόρτωση δεδομένων από το Employees.txt στον πίνακα "employees_guru"
Βήμα 2) Σε αυτό το βήμα, εμφανίζουμε τα περιεχόμενα που είναι αποθηκευμένα σε αυτόν τον πίνακα χρησιμοποιώντας την εντολή "Επιλογή". Μπορούμε να παρατηρήσουμε τα περιεχόμενα του πίνακα στο ακόλουθο στιγμιότυπο οθόνης.
Δείγμα αποσπάσματος κώδικα
Ερωτήματα που πρέπει να εκτελεστούν
1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING) > Row format delimited > Fields terminated by ','; 2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru; 3) select * from employees_guru;
Εργασία με ημιδομημένα δεδομένα χρησιμοποιώντας το Hive (XML, JSON)
Το Hive εκτελεί λειτουργίες ETL στο οικοσύστημα Hadoop λειτουργώντας ως Εργαλείο ETLΜπορεί να είναι δύσκολο να εκτελέσετε το MapReduce σε ορισμένους τύπους εφαρμογών. Το Hive μπορεί να μειώσει αυτήν την πολυπλοκότητα και παρέχει την καλύτερη λύση για εφαρμογές πληροφορικής όσον αφορά τον τομέα της αποθήκευσης δεδομένων.
Ημι-δομημένα δεδομένα όπως XML και JSON μπορούν να υποστούν επεξεργασία με λιγότερη πολυπλοκότητα χρησιμοποιώντας το Hive. Αρχικά, θα δούμε πώς μπορούμε να χρησιμοποιήσουμε το Hive για XML.
XML σε πίνακα ομάδας
Σε αυτό, θα φορτώσουμε δεδομένα XML σε πίνακες Hive και θα ανακτήσουμε τις τιμές που είναι αποθηκευμένες μέσα στις ετικέτες XML.
Βήμα 1) Δημιουργία πίνακα “xmlsample_guru” με στήλη str τύπου δεδομένων string.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Δημιουργία πίνακα "xmlsample_guru"
- Φόρτωση δεδομένων από το test.xml στον πίνακα "xmlsample_guru"
Βήμα 2) Χρήση του XPath Με τη μέθοδο xpath(), θα μπορέσουμε να ανακτήσουμε τα δεδομένα που είναι αποθηκευμένα μέσα σε ετικέτες XML.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Χρησιμοποιώντας τη μέθοδο xpath() ανακτούμε τις τιμές που είναι αποθηκευμένες στις υπομονάδες /emp/esal/ και /emp/ename/
- Τιμές που υπάρχουν μέσα σε ετικέτες XML. Σε αυτό το βήμα, εμφανίζουμε τις πραγματικές τιμές που είναι αποθηκευμένες στις ετικέτες XML στον πίνακα "xmlsample_guru"
Σημειώστε ότι η xpath() επιστρέφει έναν πίνακα από συμβολοσειρές. Η xpath_string(), η xpath_int() και η xpath_double() επιστρέφουν μια μοναδική πληκτρολογημένη τιμή.
Βήμα 3) Σε αυτό το βήμα, θα ανακτήσουμε και θα εμφανίσουμε το ακατέργαστο XML του πίνακα "xmlsample_guru".
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Τα πραγματικά δεδομένα XML που εμφανίζονται με ετικέτες
- Αν παρατηρήσουμε μία μόνο ετικέτα, αυτή έχει ως γονική ετικέτα το "emp" και ως θυγατρικές ετικέτες το "ename" και το "esal".
Code απόσπασμα:
Ερωτήματα που πρέπει να εκτελεστούν
1) create table xmlsample_guru(str string); 2) load data local inpath '/home/hduser/test.xml' overwrite into table xmlsample_guru; 3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;
JSON (JavaΣημείωση αντικειμένου σεναρίου)
Τα δεδομένα των μέσων κοινωνικής δικτύωσης και των ιστότοπων αποθηκεύονται συνήθως σε μορφή JSON. Κάθε φορά που προσπαθούμε να ανακτήσουμε δεδομένα από διαδικτυακούς διακομιστές, θα επιστρέφονται αρχεία JSON. Χρησιμοποιώντας το Hive ως χώρο αποθήκευσης δεδομένων, μπορούμε να φορτώσουμε δεδομένα JSON σε πίνακες Hive δημιουργώντας σχήματα.
JSON σε πίνακα κυψέλης
Σε αυτό, θα φορτώσουμε δεδομένα JSON σε πίνακες Hive και θα ανακτήσουμε τις τιμές που είναι αποθηκευμένες στο σχήμα JSON.
Βήμα 1) Σε αυτό το βήμα, θα δημιουργήσουμε έναν πίνακα JSON με το όνομα "json_guru". Μόλις δημιουργηθεί, φορτώνουμε και εμφανίζουμε τα περιεχόμενα του πραγματικού σχήματος.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Δημιουργία πίνακα "json_guru"
- Φόρτωση δεδομένων από το test.json στον πίνακα “json_guru”
- Εμφάνιση του πραγματικού σχήματος του αρχείου JSON που είναι αποθηκευμένο στον πίνακα json_guru
Βήμα 2) Χρησιμοποιώντας τη μέθοδο get_json_object() μπορούμε να ανακτήσουμε τις τιμές δεδομένων που είναι αποθηκευμένες στην ιεραρχία JSON.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Χρησιμοποιώντας την εντολή get_json_object(str,'$.ecode') μπορεί να ανακτήσει τιμές ecode από τον πίνακα json_guru. Ομοίως, χρησιμοποιώντας την εντολή get_json_object(str,'$.ename') και την εντολή get_json_object(str,'$.sal') θα ανακτήσει τις τιμές ename και sal από τον πίνακα json_guru.
- Τιμές που αποθηκεύονται εντός της ιεραρχίας JSON στο json_guru
Επειδή η get_json_object() αναλύει το έγγραφο μία φορά ανά κλήση, η json_tuple() είναι φθηνότερη όταν χρειάζονται πολλά κλειδιά και ένα JSON SerDe αντιστοιχίζει το έγγραφο σε πληκτρολογημένες στήλες κατά τη στιγμή της φόρτωσης.
Code αποσπάσματος
Ερωτήματα που πρέπει να εκτελεστούν
1) create table json_guru(str string); 2) load data inpath 'home/hduser/test.json' into table json_guru; 3) select * from json_guru; 4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;
Σύνθετος πίνακας JSON σε Hive
Σε αυτό, θα φορτώσουμε σύνθετα δεδομένα JSON σε πίνακες Hive και θα ανακτήσουμε τις τιμές που είναι αποθηκευμένες στο σχήμα JSON.
Βήμα 1) Δημιουργία complexjson_guru με ένα πεδίο μίας στήλης.
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής:
- Δημιουργία πίνακα complexjson_guru με ένα πεδίο μίας στήλης ως τύπο δεδομένων συμβολοσειράς
- Φόρτωση δεδομένων στο complexjson_guru από το αρχείο complex JSON emp.json
Βήμα 2) Χρησιμοποιώντας την get_json_object μπορούμε να ανακτήσουμε το πραγματικό περιεχόμενο που είναι αποθηκευμένο μέσα στην ιεραρχία αρχείων JSON.
Από το ακόλουθο στιγμιότυπο οθόνης, μπορούμε να δούμε την έξοδο των δεδομένων που είναι αποθηκευμένα στο complexjson_guru.
Βήμα 3) Σε αυτό το βήμα, χρησιμοποιώντας την εντολή "Επιλογή" μπορούμε να δούμε τα σύνθετα δεδομένα JSON που είναι αποθηκευμένα στον πίνακα "complexjson_guru".
Δείγμα αποσπάσματος κώδικα
Ερωτήματα που πρέπει να εκτελεστούν
1) create table complexjson_guru(json string); 2) load data inpath 'home/hduser/emp.json' into table complexjson_guru; 3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru; 4) select * from complexjson_guru;
Hive σε έργα πραγματικού χρόνου – Πότε και πού να χρησιμοποιηθεί
Πότε και πού να χρησιμοποιήσετε το Hive στο οικοσύστημα Hadoop:
Κατά τη
- Όταν εργάζεστε με ισχυρές και ισχυρές στατιστικές συναρτήσεις στο οικοσύστημα Hadoop
- Όταν εργάζεστε με δομημένη και ημιδομημένη επεξεργασία δεδομένων
- Ως εργαλείο αποθήκης δεδομένων με το Hadoop
- Πρόσληψη δεδομένων σε πραγματικό χρόνο με HBase, όπου μπορεί να χρησιμοποιηθεί το Hive
Πού
- Για ευκολία χρήσης ως εργαλείο ETL και αποθήκευσης δεδομένων
- Για να παρέχετε ένα περιβάλλον τύπου SQL και να υποβάλλετε ερωτήματα όπως το SQL χρησιμοποιώντας HiveQL
- Για να χρησιμοποιήσετε και να αναπτύξετε προσαρμοσμένα καθορισμένα σενάρια χαρτών και μειωτών για συγκεκριμένες απαιτήσεις πελατών











