Перегородки вулика та відра з прикладом
Таблиці, розділи та сегменти є частинами моделювання даних Hive.
Що таке розділи?
Hive Partitions — це спосіб організації таблиць у розділи шляхом поділу таблиць на різні частини на основі ключів розділів.
Секція корисна, коли таблиця має один або кілька ключів секції. Ключі розділів є основними елементами для визначення того, як дані зберігаються в таблиці.
Наприклад: -
«Клієнт, який має деякі дані електронної комерції, які належать до операцій в Індії, у яких зазначені операції в кожному штаті (38 штатів). Якщо ми візьмемо стовпець штату як ключ розділу та виконаємо розділення цих даних Індії в цілому, ми зможемо отримати кількість розділів (38 розділів), яка дорівнює кількості штатів (38), присутніх в Індії. Таким чином, дані кожного стану можна переглядати окремо в таблицях розділів.
Зразок фрагмента коду для розділів
- Створення таблиці всіх станів
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Завантаження даних у створену таблицю всіх станів
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Створення таблиці розділів
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- Для розділу ми повинні встановити цю властивість
set hive.exec.dynamic.partition.mode=nonstrict
- Завантаження даних у таблицю розділів
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Фактична обробка та формування таблиць розділів на основі стану як ключа розділу
- У сховищі HDFS буде 38 вихідних розділів із іменем файлу як іменем стану. Ми перевіримо це на цьому кроці
Наступні знімки екрана покажуть вам виконання вищезгаданого коду
З наведеного вище коду ми робимо наступні речі
- Створення таблиці всіх штатів із трьома назвами стовпців, такими як штат, округ і реєстрація
- Завантаження даних у таблицю всіх станів
- Створення таблиці розділів із державою як ключем розділу
- У цьому кроці Встановлення режиму розділу як нестрогий (цей режим активує режим динамічного розділу)
- Завантаження даних у розділ tablestate_part
- Фактична обробка та формування таблиць розділів на основі стану як ключа розділу
- У сховищі HDFS буде 38 вихідних розділів із назвою файлу як назвою стану. Ми перевіримо це на цьому кроці. На цьому кроці ми бачимо вихідні дані 38 розділів у HDFS
Що таке Buckets?
Відра у вулику використовуються для розділення даних таблиці вулика на кілька файлів або каталогів. він використовується для ефективного запиту.
- Дані, тобто присутні в цих розділах, можна далі розділити на сегменти
- Поділ виконується на основі хешу окремих стовпців, які ми вибрали в таблиці.
- Сегменти використовують певну форму алгоритму хешування на задній частині для читання кожного запису та розміщення його у відрах
- У Hive ми повинні ввімкнути відра за допомогою set.hive.enforce.bucketing=true;
Крок 1) Створення ковша, як показано нижче.
З наведеного вище знімка екрана
- Ми створюємо sample_bucket із такими назвами стовпців, як first_name, job_id, department, salary та country
- Ми створюємо тут 4 відра.
- Після автоматичного завантаження даних розмістіть їх у 4 сегменти
Крок 2) Завантаження даних у відро зразка таблиці
Припускаючи, що «Таблиця співробітників» уже створена в системі Hive. На цьому кроці ми побачимо завантаження таблиці даних із співробітників у сегмент зразків таблиці.
Перш ніж ми почнемо переміщувати дані співробітників у відра, переконайтеся, що вони складаються з назв стовпців, таких як first_name, job_id, department, salary та country.
Тут ми завантажуємо дані в сегмент зразків із таблиці співробітників.
Крок 3)Показано 4 сегменти, створені на кроці 1
На наведеному вище знімку екрана ми бачимо, що дані з таблиці співробітників переносяться в 4 сегменти, створені на кроці 1.