Кошерни прегради и кофи с пример
Таблици, дялове и кофи са частите от моделирането на данни в 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;
- Действителна обработка и формиране на таблици на дялове въз основа на състояние като ключ на дял
- Ще има 38 изхода на дялове в хранилището на HDFS с името на файла като име на състояние. Ще проверим това в тази стъпка
Следните екранни снимки ще ви покажат изпълнението на гореспоменатия код
От горния код правим следните неща
- Създаване на таблица с всички щати с 3 имена на колони като щат, област и записване
- Зареждане на данни в таблица всички състояния
- Създаване на таблица на дялове със състояние като ключ на дял
- В тази стъпка Задаване на режим на разделяне като нестрог (този режим ще активира режим на динамично разделяне)
- Зареждане на данни в дял tablestate_part
- Действителна обработка и формиране на таблици на дялове въз основа на състояние като ключ на дял
- Ще има 38 изхода на дялове в хранилището на HDFS с името на файла като име на състояние. Ще проверим това в тази стъпка. В тази стъпка виждаме изхода на 38 дяла в HDFS
Какво е Buckets?
Кофите в кошера се използват за разделяне на табличните данни на кошера в множество файлове или директории. използва се за ефективно запитване.
- Данните, т.е. наличните в тези дялове, могат да бъдат разделени допълнително на кофи
- Разделянето се извършва въз основа на хеша на определени колони, които сме избрали в таблицата.
- Кофите използват някаква форма на алгоритъм за хеширане в задния край, за да прочетат всеки запис и да го поставят в кофи
- В Hive трябва да активираме кофи с помощта на set.hive.enforce.bucketing=true;
Стъпка 1) Създаване на кофа, както е показано по-долу.
От горната екранна снимка
- Създаваме sample_bucket с имена на колони като first_name, job_id, отдел, заплата и държава
- Създаваме 4 кофи тук.
- След като данните се заредят автоматично, поставете данните в 4 кофи
Стъпка 2) Зареждане на данни в примерна кофа на таблица
Ако приемем, че „таблицата на служителите“ вече е създадена в системата Hive. В тази стъпка ще видим зареждането на таблицата с данни от служителите в групата за примерна таблица.
Преди да започнем да преместваме данните за служителите в кофи, уверете се, че те се състоят от имена на колони като first_name, job_id, отдел, заплата и държава.
Тук зареждаме данни в примерна кофа от таблицата на служителите.
Стъпка 3)Показани са 4 кофи, създадени в Стъпка 1
От горната екранна снимка можем да видим, че данните от таблицата на служителите се прехвърлят в 4 кофи, създадени в стъпка 1.