Προβολή και Ευρετηρίαση Κυψέλης: Δημιουργία με Παραδείγματα
⚡ Έξυπνη Σύνοψη
Οι προβολές στο Hive είναι αποθηκευμένα ερωτήματα που συμπεριφέρονται σαν πίνακες μόνο για ανάγνωση, ενώ τα ευρετήρια είναι δείκτες σε μια στήλη που επιταχύνουν τις αναζητήσεις και και τα δύο δημιουργούνται με σύντομες εντολές HiveQL που εμφανίζονται εδώ.
Τι είναι η Προβολή;
Οι προβολές είναι παρόμοιες με τους πίνακες και δημιουργούνται με βάση τις απαιτήσεις. Μια προβολή είναι ένα καθαρά λογικό αντικείμενο χωρίς δικό του χώρο αποθήκευσης: Το Hive διατηρεί μόνο το κείμενο του ερωτήματος στο μετα-αποθετήριο και το αξιολογεί κάθε φορά που γίνεται αναφορά στην προβολή.
- Μπορούμε να αποθηκεύσουμε οποιαδήποτε δεδομένα συνόλου αποτελεσμάτων ως προβολή στο Hive
- Η χρήση είναι παρόμοια με τις προβολές που χρησιμοποιούνται στο SQL
- Μια προβολή είναι μόνο για ανάγνωση, επομένως δεν μπορεί να είναι ο στόχος μιας εντολής LOAD, INSERT ή ALTER που γράφει δεδομένα.
Δημιουργία προβολής:
Σύνταξη:
Create VIEW <VIEWNAME> AS SELECT
Η πλήρης τεκμηριωμένη φόρμα δέχεται επίσης μια ρήτρα IF NOT EXISTS και μια προαιρετική λίστα στηλών, η οποία είναι χρήσιμη όταν η λίστα SELECT περιέχει παραστάσεις αντί για απλά ονόματα στηλών.
Παράδειγμα:
Hive>Create VIEW Sample_View AS SELECT * FROM employees WHERE salary>25000
Σε αυτό το παράδειγμα, δημιουργούμε την προβολή Sample_View, η οποία εμφανίζει όλες τις τιμές γραμμών με πεδίο μισθού μεγαλύτερο από 25000. Το φίλτρο βρίσκεται μέσα στην προβολή, επομένως οποιοδήποτε ερώτημα που επιλέγει από το Sample_View βλέπει μόνο αυτές τις γραμμές.
Τι είναι το Index;
Τα ευρετήρια είναι δείκτες προς ένα συγκεκριμένο όνομα στήλης ενός πίνακα. Ο στόχος ενός ευρετηρίου είναι η βελτίωση της ταχύτητας αναζήτησης: χωρίς αυτό, ένα ερώτημα με ένα κατηγόρημα όπως ΟΠΟΥ tab1.col1 = 10 φορτώνει ολόκληρο τον πίνακα ή το διαμέρισμα και επεξεργάζεται κάθε γραμμή, ενώ ένα ευρετήριο στη στήλη 1 επιτρέπει στο Hive να διαβάσει μόνο ένα μέρος του αρχείου.
- Ο χρήστης πρέπει να ορίσει χειροκίνητα το ευρετήριο
- Όπου δημιουργούμε ένα ευρετήριο, αυτό σημαίνει ότι δημιουργούμε έναν δείκτη προς ένα συγκεκριμένο όνομα στήλης του πίνακα.
- Οποιεσδήποτε αλλαγές γίνονται στη στήλη που υπάρχει στον πίνακα αποθηκεύονται χρησιμοποιώντας την τιμή ευρετηρίου που δημιουργείται στο όνομα της στήλης.
Αυτή η επιτάχυνση δεν είναι δωρεάν. Η δημιουργία του ευρετηρίου κοστίζει επιπλέον επεξεργασία και το ίδιο το ευρετήριο καταλαμβάνει χώρο στο δίσκο που πρέπει να διατηρείται παράλληλα με τον πίνακα.
Σύνταξη:
Create INDEX <INDEX_NAME> ON TABLE <TABLE_NAME(column names)>
Παράδειγμα:
Create INDEX sample_Index ON TABLE guruhive_internaltable(id)
Εδώ δημιουργούμε ένα ευρετήριο στον πίνακα guruhive_internaltable για το αναγνωριστικό ονόματος στήλης. Σημειώστε ότι μια πλήρης δήλωση σε μια έκδοση που εξακολουθεί να υποστηρίζει την ευρετηρίαση χρειάζεται επίσης μια ρήτρα χειριστή ευρετηρίου, την οποία παρουσιάζει πλήρως η επόμενη ενότητα.
Διαφορά μεταξύ προβολής και ευρετηρίου στην κυψέλη
Οι προβολές και τα ευρετήρια συχνά εισάγονται μαζί επειδή και τα δύο βρίσκονται πάνω από έναν υπάρχοντα πίνακα, αλλά επιλύουν διαφορετικά προβλήματα. Μια προβολή αλλάζει αυτό που βλέπει ένα ερώτημα, ενώ ένα ευρετήριο αλλάζει την ταχύτητα με την οποία το βρίσκει το Hive. Ο παρακάτω πίνακας τα συγκρίνει.
| Άποψη | Προβολή | Περιεχόμενα |
|---|---|---|
| Τι αποθηκεύει | Μόνο η πρόταση SELECT, στο metastore | Ένας ξεχωριστός πίνακας ευρετηρίου που περιέχει δείκτες προς τα δεδομένα |
| Σκοπός | Απλοποίηση ή περιορισμός του τι επιστρέφει ένα ερώτημα | Μειώστε την ποσότητα δεδομένων που σαρώνονται για ένα κατηγόρημα |
| Κόστος δίσκου | Ν/Α | Επιπλέον αποθηκευτικός χώρος συν ανακατασκευή μετά από αλλαγές δεδομένων |
| Πρόσβαση εγγραφής | Μόνο για ανάγνωση | Δεν ερωτάται απευθείας· το χρησιμοποιεί ο βελτιστοποιητής |
| Τρέχουσα κατάσταση | Υποστηρίζεται πλήρως | Αφαιρέθηκε στο Hive 3.0 |
Στην πράξη, δημιουργείται μια προβολή για αναγνωσιμότητα και έλεγχο πρόσβασης, ενώ ένα ευρετήριο δημιουργείται αποκλειστικά για την απόδοση σε μια επιλεκτική στήλη.
Τύποι ευρετηρίου στο Hive με σύνταξη
Οι εκδόσεις έως και το Hive 2.x περιελάμβαναν δύο χειριστές ευρετηρίου, ο οποίος ονομάζεται στην υποχρεωτική ρήτρα AS. Η συμπαγής ευρετηρίαση έφτασε στο Hive 0.7.0 και η ευρετηρίαση bitmap στο Hive 0.8.0.
- Συμπαγής δείκτης: Αποθηκεύει την τιμή μαζί με τη διεύθυνση του μπλοκ HDFS που την περιέχει, αντί να καταγράφει την τοποθεσία κάθε μεμονωμένης εμφάνισης. Κατάλληλο για στήλες με πολλές διακριτές τιμές.
- Ευρετήριο bitmap: αποθηκεύει ένα bitmap ανά διακριτή τιμή, η οποία είναι η συνήθης προσέγγιση για μια στήλη με μόνο έναν μικρό αριθμό διακριτών τιμών, όπως μια σημαία κατάστασης ή φύλου.
Ένα συμπαγές ευρετήριο δημιουργείται, παρατίθεται και αποσύρεται ως εξής:
CREATE INDEX table01_index ON TABLE table01 (column2) AS 'COMPACT'; SHOW INDEX ON table01; DROP INDEX table01_index ON table01;
Η επιλογή WITH DEFERRED REBUILD καταχωρεί το ευρετήριο χωρίς να το συμπληρώσει, επομένως η δημιουργία μπορεί να προγραμματιστεί ξεχωριστά με ALTER INDEX. Ένα ευρετήριο bitmap δημιουργείται με τον ίδιο τρόπο, με διαφορετικό όνομα χειριστή:
CREATE INDEX table03_index ON TABLE table03 (column4) AS 'BITMAP' WITH DEFERRED REBUILD; ALTER INDEX table03_index ON table03 REBUILD; SHOW FORMATTED INDEX ON table03; DROP INDEX table03_index ON table03;
Ένα ευρετήριο δεν ανανεώνεται αυτόματα. Κάθε φορά που ο βασικός πίνακας λαμβάνει νέα δεδομένα, η εντολή ALTER INDEX … REBUILD πρέπει να εκτελεστεί ξανά και σε έναν πίνακα με διαμερίσματα η αναδόμηση μπορεί να περιοριστεί σε ένα μόνο διαμέρισμα.
Γιατί καταργήθηκε η δημιουργία ευρετηρίου στο Hive 3.0
Η δημιουργία ευρετηρίου αφαιρέθηκε από το Hive στην έκδοση 3.0 με το HIVE-18448, επομένως οι λειτουργίες CREATE INDEX, SHOW INDEX και DROP INDEX δεν υπάρχουν πλέον σε ένα τρέχον σύμπλεγμα. Η λειτουργία σπάνια άξιζε το κόστος ανακατασκευής της μόλις ωρίμασε η αποθήκευση σε στήλες και ο βελτιστοποιητής βάσει κόστους. Τρεις αντικαταστάσεις καλύπτουν το ίδιο πεδίο.
- Υλοποιημένες προβολές: που εισήχθη στο Hive 3.0.0, ένα υλοποιημένη άποψη Αποθηκεύει το προ-υπολογισμένο αποτέλεσμα ενός ερωτήματος και ο βελτιστοποιητής ξαναγράφει τα εισερχόμενα ερωτήματα σε σχέση με αυτό αυτόματα.
- Μορφές αρχείων σε σχήμα στήλης: Τα ORC και Parquet διαθέτουν τους δικούς τους δείκτες χαμηλού βάρους και στατιστικά στοιχεία ελάχιστου/μέγιστου, έτσι ώστε ο αναγνώστης να μπορεί να παραλείψει ολόκληρες λωρίδες, μπλοκ ή αρχεία χωρίς κανένα δείκτη που να ορίζεται από τον χρήστη.
- Χωρίσματα και κουβάδες: διαμέριση και ομαδοποίηση κλαδεύουν δεδομένα σε επίπεδο καταλόγου και αρχείου, κάτι που συνήθως αφαιρεί πολύ περισσότερα δεδομένα εισόδου από ό,τι αφαιρούσε ποτέ ένα ευρετήριο.
Στο Hive 2.x, ένα ευρετήριο εξακολουθεί να είναι έγκυρο, αλλά η νέα εργασία εξυπηρετείται καλύτερα με μία από τις παραπάνω επιλογές.

