Ερωτήματα κυψέλης: Παραγγελία κατά, ομαδοποίηση κατά, διανομή κατά, Cluster Με Παραδείγματα

Το Hive παρέχει γλώσσα ερωτημάτων τύπου SQL για τον σκοπό ETL πάνω από Hadoop σύστημα αρχείων.

Η γλώσσα Hive Query (HiveQL) παρέχει περιβάλλον τύπου SQL στο Hive για εργασία με πίνακες, βάσεις δεδομένων, ερωτήματα.

Μπορούμε να έχουμε διαφορετικό τύπο ρητρών που σχετίζονται με το Hive για την εκτέλεση διαφορετικών τύπων χειρισμών δεδομένων και ερωτημάτων. Για καλύτερη συνδεσιμότητα με διαφορετικούς κόμβους εκτός περιβάλλοντος. Το HIVE παρέχει επίσης συνδεσιμότητα JDBC.

Το Hive Query παρέχει τις ακόλουθες δυνατότητες:

  • Μοντελοποίηση δεδομένων όπως Δημιουργία βάσεων δεδομένων, πινάκων κ.λπ.
  • Λειτουργίες ETL όπως Εξαγωγή, Μετασχηματισμός και Φόρτωση δεδομένων σε πίνακες
  • Ενώνει για τη συγχώνευση διαφορετικών πινάκων δεδομένων
  • Ειδικά προσαρμοσμένα σενάρια χρήστη για ευκολία στον κώδικα
  • Ταχύτερο εργαλείο αναζήτησης πάνω από το Hadoop

Δημιουργία πίνακα στο Hive

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

Εδώ σε αυτό το σεμινάριο, θα δημιουργήσουμε τον πίνακα "employees_guru" με 6 στήλες.

Δημιουργία πίνακα στο Hive

Από το παραπάνω στιγμιότυπο οθόνης,

  1. Δημιουργούμε τον πίνακα "employees_guru" με τιμές 6 στηλών, όπως Id, Name, Age, Address, Μισθός, Τμήμα, ο οποίος ανήκει στους υπαλλήλους του οργανισμού "guru".
  2. Εδώ σε αυτό το βήμα φορτώνουμε δεδομένα στον πίνακα staffs_guru. Τα δεδομένα που πρόκειται να φορτώσουμε θα τοποθετηθούν στο αρχείο Employees.txt

Παραγγελία με ερώτημα

Η σύνταξη ORDER BY στο HiveQL είναι παρόμοια με τη σύνταξη του ORDER BY στο SQL Γλώσσα.

Η σειρά κατά είναι η ρήτρα που χρησιμοποιούμε με τη δήλωση "ΕΠΙΛΟΓΗ". Ερωτήματα κυψέλης, που βοηθά στην ταξινόμηση δεδομένων. Σειρά ανά ρήτρα χρησιμοποιήστε στήλες στους πίνακες Hive για την ταξινόμηση συγκεκριμένων τιμών στηλών που αναφέρονται με Παραγγελία κατά. Για όποιο και αν είναι το όνομα της στήλης που ορίζουμε τη σειρά ανά όρο, το ερώτημα θα επιλέξει και θα εμφανίσει αποτελέσματα με αύξουσα ή φθίνουσα σειρά τις συγκεκριμένες τιμές της στήλης.

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

Παραγγελία με Ερώτημα

Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής

  1. Είναι το ερώτημα που εκτελείται στον πίνακα "employees_guru" με την ρήτρα ORDER BY με Τμήμα όπως ορίζεται ORDER BY name στήλης."Department" είναι String, επομένως θα εμφανίζει αποτελέσματα με βάση τη λεξικογραφική σειρά.
  2. Αυτή είναι η πραγματική έξοδος για το ερώτημα. Αν το παρατηρήσουμε σωστά, μπορούμε να δούμε ότι λαμβάνει αποτελέσματα που εμφανίζονται με βάση τη στήλη του Τμήματος όπως ΔΙΑΧΕΙΡΙΣΤΗΣ, Οικονομικά και ούτω καθεξής προκειμένου να εκτελεστεί το orderQuery.

Ερώτημα:

SELECT * FROM employees_guru ORDER BY Department;

Ομαδοποίηση ανά ερώτημα

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

Για παράδειγμα, στο παρακάτω στιγμιότυπο οθόνης θα εμφανιστεί ο συνολικός αριθμός των υπαλλήλων που είναι παρόντες σε κάθε τμήμα. Εδώ έχουμε το "Τμήμα" ως Ομάδα κατά αξία.

Ομαδοποίηση ανά ερώτημα

Από το παραπάνω στιγμιότυπο οθόνης, θα παρατηρήσουμε τα εξής

  1. Είναι το ερώτημα που εκτελείται στον πίνακα "employees_guru" με τον όρο GROUP BY με Τμήμα όπως ορίζεται GROUP BY όνομα στήλης.
  2. Το αποτέλεσμα που εμφανίζεται εδώ είναι το όνομα του τμήματος και οι υπάλληλοι μετρούν σε διαφορετικά τμήματα. Εδώ όλοι οι υπάλληλοι που ανήκουν στο συγκεκριμένο τμήμα ομαδοποιούνται και εμφανίζονται στα αποτελέσματα. Άρα το αποτέλεσμα είναι το όνομα τμήματος με τον συνολικό αριθμό των υπαλλήλων που είναι παρόντες σε κάθε τμήμα.

Ερώτηση:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Ταξινόμηση κατά

Η ταξινόμηση κατά ρήτρα εκτελείται στα ονόματα στηλών των πινάκων Hive για την ταξινόμηση της εξόδου. Μπορούμε να αναφέρουμε το DESC για την ταξινόμηση της σειράς σε φθίνουσα σειρά και να αναφέρουμε το ASC για την Αύξουσα σειρά της ταξινόμησης.

Σε αυτήν την ταξινόμηση, θα ταξινομήσει τις σειρές πριν από την τροφοδοσία στον μειωτήρα. Η ταξινόμηση κατά εξαρτάται πάντα από τους τύπους στηλών.

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

Ταξινόμηση κατά

Από το παραπάνω στιγμιότυπο οθόνης μπορούμε να παρατηρήσουμε τα εξής:

  1. Είναι το ερώτημα που εκτελεί στον πίνακα "employees_guru" με τον όρο SORT BY με "id" όπως ορίζει SORT BY όνομα στήλης. Χρησιμοποιήσαμε τη λέξη-κλειδί DESC.
  2. Έτσι, η έξοδος που εμφανίζεται θα είναι με φθίνουσα σειρά "id".

Ερώτηση:

SELECT * from employees_guru SORT BY Id DESC;

Cluster By

Cluster Χρησιμοποιείται ως εναλλακτική λύση και για τις ρήτρες Distribute BY και Sort BY στο Hive-QL.

Cluster BY ρήτρα που χρησιμοποιείται στους πίνακες που υπάρχουν στο Hive. Το Hive χρησιμοποιεί τις στήλες σε Cluster για να κατανεμηθούν οι σειρές μεταξύ των μειωτών. Cluster Οι στήλες BY θα μεταβούν στους πολλαπλούς μειωτήρες.

  • Εξασφαλίζει σειρές ταξινόμησης τιμών που υπάρχουν σε πολλαπλούς μειωτήρες

Για παράδειγμα, Cluster Με την ρήτρα που αναφέρεται στο όνομα της στήλης Id του πίνακα staffs_guru. Η έξοδος κατά την εκτέλεση αυτού του ερωτήματος θα δώσει αποτελέσματα σε πολλαπλούς μειωτήρες στο πίσω μέρος. Αλλά ως front end είναι μια εναλλακτική ρήτρα τόσο για Ταξινόμηση κατά όσο και για Διανομή κατά.

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

Cluster By

Από το παραπάνω στιγμιότυπο οθόνης λαμβάνουμε τις ακόλουθες παρατηρήσεις:

  1. Είναι το ερώτημα που εκτελεί τον όρο CLUSTER BY στην τιμή του πεδίου Id. Εδώ πρόκειται να πάρει μια ταξινόμηση για τις τιμές αναγνωριστικού.
  2. Εμφανίζει το αναγνωριστικό και τα ονόματα που υπάρχουν στην ταξινόμηση guru_employees κατά σειρά

Ερώτηση:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Διανομή κατά

Διανομή ρήτρας BY που χρησιμοποιείται στους πίνακες που υπάρχουν στο Hive. Το Hive χρησιμοποιεί τις στήλες στο Distribute by για να κατανείμει τις σειρές μεταξύ των μειωτών. Όλες οι στήλες Διανομή ΑΝΑ θα πάνε στον ίδιο μειωτήρα.

  • Διασφαλίζει ότι καθένας από τους N μειωτήρες λαμβάνει μη επικαλυπτόμενα εύρη στηλών
  • Δεν ταξινομεί την έξοδο κάθε μειωτήρα

Διανομή κατά

Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής

  1. ΔΙΑΝΟΜΗ ΚΑΤΑ ρήτρα που εκτελεί το αναγνωριστικό του πίνακα "empoloyees_guru"
  2. Έξοδος που δείχνει Id, Name. Στο πίσω μέρος, θα πάει στον ίδιο μειωτήρα

Ερώτηση:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;