Hive παρέχει γλώσσα ερωτήματος τύπου SQL για το σκοπό ETL πάνω από το σύστημα αρχείων Hadoop.
Η γλώσσα ερωτήματος Hive (HiveQL) παρέχει περιβάλλον τύπου SQL στο Hive για εργασία με πίνακες, βάσεις δεδομένων, ερωτήματα.
Μπορούμε να έχουμε έναν διαφορετικό τύπο Ρήτρες που σχετίζονται με την Κυψέλη για να εκτελέσουμε διαφορετικούς τύπους χειρισμών και ερωτήσεων δεδομένων. Για καλύτερη συνδεσιμότητα με διαφορετικούς κόμβους εκτός του περιβάλλοντος. Το HIVE παρέχει επίσης συνδεσιμότητα JDBC.
Τα ερωτήματα κυψέλης παρέχουν τις ακόλουθες δυνατότητες:
- Μοντελοποίηση δεδομένων όπως Δημιουργία βάσεων δεδομένων, πινάκων κ.λπ.
- Λειτουργίες ETL όπως Εξαγωγή, Μετασχηματισμός και Φόρτωση δεδομένων σε πίνακες
- Συνδέεται για τη συγχώνευση διαφορετικών πινάκων δεδομένων
- Προσαρμοσμένα σενάρια ειδικά για τον χρήστη για ευκολία στον κώδικα
- Γρηγορότερο εργαλείο ερωτήσεων πάνω από το Hadoop
Σε αυτό το άρθρο, θα μάθετε-
- Παραγγελία ανά ερώτημα
- Ομαδοποίηση ανά ερώτημα
- Ταξινόμηση κατά
- Σύμπλεγμα από
- Διανομή από
Δημιουργία πίνακα στην κυψέλη
Πριν ξεκινήσετε με το κύριο θέμα για αυτό το σεμινάριο, πρώτα θα δημιουργήσουμε έναν πίνακα για να τον χρησιμοποιήσουμε ως αναφορές για το ακόλουθο σεμινάριο.
Εδώ σε αυτό το σεμινάριο, πρόκειται να δημιουργήσουμε πίνακα "karyawan_guru" με 6 στήλες.
Από το παραπάνω στιγμιότυπο οθόνης,
- Δημιουργούμε πίνακα "karyawan_guru" με 6 τιμές στηλών, όπως Αναγνωριστικό, Όνομα, Ηλικία, Διεύθυνση, Μισθός, Τμήμα, που ανήκει στους υπαλλήλους που είναι παρόντες στον οργανισμό "γκουρού".
- Εδώ σε αυτό το βήμα φορτώνουμε δεδομένα στον πίνακα karyawan_guru. Τα δεδομένα που πρόκειται να φορτώσουμε θα τοποθετηθούν στο αρχείο Employees.txt
Παραγγελία ανά ερώτημα:
Η σύνταξη ORDER BY στο HiveQL είναι παρόμοια με τη σύνταξη του ORDER BY σε γλώσσα SQL.Η παραγγελία είναι η ρήτρα που χρησιμοποιούμε με τη δήλωση "SELECT" στα ερωτήματα Hive, η οποία βοηθά στην ταξινόμηση δεδομένων. Ταξινόμηση κατά ρήτρα χρησιμοποιήστε στήλες στους πίνακες Hive για ταξινόμηση συγκεκριμένων τιμών στηλών που αναφέρονται με το Ταξινόμηση κατά. Για ό, τι και αν είναι το όνομα της στήλης, ορίζουμε τη σειρά με ρήτρα, το ερώτημα θα επιλέξει και θα εμφανίσει αποτελέσματα με αύξουσα ή φθίνουσα σειρά των συγκεκριμένων τιμών στηλών.
Εάν η αναφερόμενη σειρά ανά πεδίο είναι μια συμβολοσειρά, τότε θα εμφανίσει το αποτέλεσμα με λεξικογραφική σειρά. Στο πίσω μέρος, πρέπει να μεταφερθεί σε έναν μόνο μειωτή.
Από την παραπάνω οθόνη, μπορούμε να παρατηρήσουμε τα ακόλουθα
- Είναι το ερώτημα που εκτελεί στον πίνακα "karyawan_guru" με τον όρο ORDER BY με το Τμήμα όπως ορίζεται το όνομα στήλης ORDER BY.
Το "Department" είναι String, οπότε θα εμφανίζει αποτελέσματα βάσει λεξικογραφικής σειράς.
- Αυτή είναι η πραγματική έξοδος για το ερώτημα. Εάν το παρατηρήσουμε σωστά, μπορούμε να δούμε ότι εμφανίζεται αποτελέσματα με βάση τη στήλη Τμήματος, όπως ADMIN, Finance και ούτω καθεξής, προκειμένου να εκτελεστεί το ερώτημα.
Ερώτημα:
SELECT * FROM employees_guru ORDER BY Department;
Ομαδοποίηση ανά ερώτημα:
Ομαδοποίηση κατά ρήτρα χρησιμοποιήστε στήλες στους πίνακες Hive για ομαδοποίηση συγκεκριμένων τιμών στηλών που αναφέρονται με την ομάδα κατά Για ό, τι και αν είναι το όνομα της στήλης, ορίζουμε έναν όρο "groupby", το ερώτημα θα επιλέξει και θα εμφανίσει αποτελέσματα ομαδοποιώντας τις συγκεκριμένες τιμές στηλών.
Για παράδειγμα, στο παρακάτω στιγμιότυπο οθόνης θα εμφανιστεί ο συνολικός αριθμός των υπαλλήλων που είναι παρόντες σε κάθε τμήμα. Εδώ έχουμε το "Τμήμα" ως ομάδα κατά αξία.
Από το παραπάνω στιγμιότυπο οθόνης, θα παρατηρήσουμε τα ακόλουθα
- Είναι το ερώτημα που εκτελείται στον πίνακα "karyawan_guru" με τον όρο GROUP BY με το Τμήμα όπως ορίζεται το όνομα στήλης GROUP BY.
- Η έξοδος που εμφανίζεται εδώ είναι το όνομα του τμήματος και οι υπάλληλοι μετράνε σε διαφορετικά τμήματα. Εδώ όλοι οι υπάλληλοι που ανήκουν στο συγκεκριμένο τμήμα ομαδοποιούνται και εμφανίζονται στα αποτελέσματα. Έτσι το αποτέλεσμα είναι το όνομα τμήματος με τον συνολικό αριθμό υπαλλήλων που υπάρχουν σε κάθε τμήμα.
Ερώτηση:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Ταξινόμηση κατά:
Ταξινόμηση κατά ρήτρα εκτελείται σε ονόματα στηλών των πινάκων Hive για να ταξινομήσετε την έξοδο. Μπορούμε να αναφέρουμε το DESC για ταξινόμηση της σειράς με φθίνουσα σειρά και να αναφέρουμε το ASC για αύξουσα σειρά του είδους.
Σε αυτό το είδος κατά σειρά θα ταξινομήσει τις σειρές πριν τροφοδοτήσει τον μειωτή. Η ταξινόμηση πάντα ανάλογα με τους τύπους στηλών.
Για παράδειγμα, εάν οι τύποι στηλών είναι αριθμητικοί, θα ταξινομηθούν με αριθμητική σειρά, εάν οι τύποι στηλών είναι συμβολοσειρά, θα ταξινομηθούν με λεξικογραφική σειρά.
Από το παραπάνω στιγμιότυπο οθόνης μπορούμε να παρατηρήσουμε τα εξής:
- Είναι το ερώτημα που εκτελεί στον πίνακα "karyawan_guru" με τον όρο SORT BY με "id" όπως ορίζει το όνομα στήλης SORT BY. Χρησιμοποιήσαμε λέξη-κλειδί DESC.
- Έτσι, η έξοδος που εμφανίζεται θα είναι σε φθίνουσα σειρά του "id".
Ερώτηση:
SELECT * from employees_guru SORT BY Id DESC;
Σύμπλεγμα από:
Cluster By χρησιμοποιείται ως εναλλακτική λύση τόσο για τους όρους Διανομή BY όσο και ταξινόμηση BY στο Hive-QL.
Ο όρος Cluster BY χρησιμοποιείται σε πίνακες που υπάρχουν στο Hive. Η κυψέλη χρησιμοποιεί τις στήλες στο σύμπλεγμα για να διανείμει τις σειρές μεταξύ των μειωτών. Οι στήλες συμπλέγματος BY θα μεταβούν στους πολλαπλούς μειωτές.
- Διασφαλίζει την ταξινόμηση των παραγγελιών των τιμών που υπάρχουν σε πολλαπλούς μειωτές
Για παράδειγμα, ο όρος Cluster By αναφέρεται στο όνομα στήλης Id του πίνακα ملازمین_guru πίνακα. Η έξοδος κατά την εκτέλεση αυτού του ερωτήματος θα δώσει αποτελέσματα σε πολλούς μειωτές στο πίσω μέρος. Αλλά ως front end είναι μια εναλλακτική ρήτρα τόσο για το Ταξινόμηση κατά όσο και για το Διανομή κατά.
Αυτή είναι στην πραγματικότητα διαδικασία back end όταν πραγματοποιούμε ένα ερώτημα με ταξινόμηση κατά, ομαδοποίηση και σύμπλεγμα από άποψη πλαισίου μείωσης χάρτη. Έτσι, εάν θέλουμε να αποθηκεύσουμε τα αποτελέσματα σε πολλαπλούς μειωτές, πηγαίνουμε με το Cluster By.
Από το παραπάνω στιγμιότυπο οθόνης λαμβάνουμε τις ακόλουθες παρατηρήσεις:
- Είναι το ερώτημα που εκτελεί τον όρο CLUSTER BY στην τιμή πεδίου Id. Εδώ θα πάρει ένα είδος στις τιμές Id.
- Εμφανίζει το αναγνωριστικό και τα ονόματα που υπάρχουν στο γκουρού-εργαζόμενοι κατά ταξινόμηση κατά
Ερώτηση:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Διανομή από:
Διανομή BY ρήτρα που χρησιμοποιείται σε πίνακες που υπάρχουν στην ομάδα. Η ομάδα χρησιμοποιεί τις στήλες στο "Διανομή" για να διανείμει τις σειρές μεταξύ των μειωτών. Όλες οι στήλες διανομής BY θα μεταβούν στον ίδιο μειωτήρα.
- Διασφαλίζει ότι κάθε ένας από τους μειωτές Ν έχει μη επικαλυπτόμενες περιοχές στηλών
- Δεν ταξινομεί την έξοδο κάθε μειωτή
Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα ακόλουθα
- ΔΙΑΝΟΜΗ ΑΝΑ Ρήτρα που εκτελείται στο αναγνωριστικό του πίνακα "empoloyees_guru"
- Έξοδος που δείχνει το αναγνωριστικό, το όνομα. Στο πίσω μέρος, θα πάει στον ίδιο μειωτήρα
Ερώτηση:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;