Κοινή χρήση τεχνολογίας

Τραπέζι χωρισμάτων κυψέλης

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Τραπέζι χωρισμάτων:

Είναι ένας τύπος πίνακα στο Hive Με τη διαίρεση των δεδομένων του πίνακα σε πολλαπλά υποσύνολα (διαμερίσματα), κάθε διαμέρισμα αντιστοιχεί σε μια συγκεκριμένη τιμή στήλης στον πίνακα, η απόδοση του ερωτήματος και η αποτελεσματικότητα διαχείρισης δεδομένων μπορούν να βελτιωθούν. Κάθε διαμέρισμα ενός πίνακα με διαμερίσματα αποθηκεύεται σε ξεχωριστό κατάλογο και το διαμέρισμα ορίζεται με βάση μία ή περισσότερες στήλες στον πίνακα. Ο κύριος σκοπός της χρήσης διαμερισμένων πινάκων είναι να μειωθεί ο όγκος των δεδομένων που σαρώνονται από ερωτήματα, βελτιώνοντας έτσι την αποτελεσματικότητα των ερωτημάτων.

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

  1. CREATE TABLE customer_data (
  2. customer_id STRING,
  3. name STRING,
  4. age INT,
  5. email STRING
  6. )
  7. PARTITIONED BY (city STRING)
  8. STORED AS ORC;
  9. select *
  10. from customer_data;
  11. -- 插入 New York 的数据
  12. INSERT INTO TABLE customer_data PARTITION (city='New York')
  13. VALUES
  14. ('1', 'John Doe', 30, '[email protected]'),
  15. ('2', 'Jane Smith', 25, '[email protected]'),
  16. ('3', 'Bob Johnson', 40, '[email protected]');
  17. -- 插入 Los Angeles 的数据
  18. INSERT INTO TABLE customer_data PARTITION (city='Los Angeles')
  19. VALUES
  20. ('4', 'Alice Brown', 32, '[email protected]'),
  21. ('5', 'Charlie Davis', 28, '[email protected]');
  22. -- 插入 Chicago 的数据
  23. INSERT INTO TABLE customer_data PARTITION (city='Chicago')
  24. VALUES
  25. ('6', 'Eve White', 45, '[email protected]'),
  26. ('7', 'Frank Black', 37, '[email protected]');

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

SELECT * FROM customer_data WHERE city='New York';

2. Τραπέζι με κάδο:

Είναι ένας άλλος τύπος πίνακα στο Hive Με τον κατακερματισμό των δεδομένων στον πίνακα, η απόδοση του ερωτήματος μπορεί να βελτιωθεί περαιτέρω, ειδικά κατά την εκτέλεση εργασιών σύνδεσης και συγκέντρωσης. Οι πίνακες κουβάδων χωρίζουν τα δεδομένα σε έναν σταθερό αριθμό κάδων και κάθε κάδος αποθηκεύεται σε ξεχωριστό αρχείο.
-------------------------------------------------- -Χαρακτηριστικά τραπεζιού κουβά--------------------------------------------- -------
Διαμερισμός δεδομένων: Κατανείμετε τα δεδομένα σε έναν σταθερό αριθμό κάδων με βάση την τιμή κατακερματισμού μιας ή περισσότερων στηλών.
Αποθήκευση αρχείων: Τα δεδομένα κάθε κάδου αποθηκεύονται σε ξεχωριστό αρχείο.
Ομοιόμορφη κατανομή: Ιδανικά, τα δεδομένα κατανέμονται ομοιόμορφα σε όλους τους κάδους, βελτιώνοντας έτσι την απόδοση των ερωτημάτων.

  1. CREATE TABLE customer_data2 (
  2. customer_id STRING,
  3. name STRING,
  4. age INT,
  5. email STRING
  6. )
  7. CLUSTERED BY (customer_id) INTO 4 BUCKETS
  8. STORED AS ORC;
  9. -- 插入数据到分桶表
  10. --通过这些步骤,我们创建了一个按 customer_id 列进行分桶的 Hive 表 customer_data,并插入了具体的数据。
  11. INSERT INTO TABLE customer_data2 VALUES
  12. ('1', 'John Doe', 30, '[email protected]'),
  13. ('2', 'Jane Smith', 25, '[email protected]'),
  14. ('3', 'Bob Johnson', 40, '[email protected]'),
  15. ('4', 'Alice Brown', 32, '[email protected]'),
  16. ('5', 'Charlie Davis', 28, '[email protected]'),
  17. ('6', 'Eve White', 45, '[email protected]'),
  18. ('7', 'Frank Black', 37, '[email protected]'),
  19. ('8', 'Grace Green', 22, '[email protected]');
  20. select *
  21. from customer_data2;

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