Създаване на таблица в кошера: Вътрешно, Промяна и премахване с примери

⚡ Умно обобщение

Създаване, промяна и премахванеping Таблиците в Apache Hive използват познатия DDL в SQL стил, но резултатът зависи от това дали таблицата е вътрешна, която Hive притежава, или външна, която просто описва файлове.

  • 🧱 СЪЗДАВАНЕ НА ТАБЛИЦА: Едно изявление определя колоните, формата на редовете и, по избор, мястото за съхранение на таблица в Hive.
  • ???? ️ ПРОМЯНА НА ТАБЛИЦА: RENAME променя името на таблицата, а ADD COLUMNS или CHANGE COLUMN редактира схемата без презареждане на данни.
  • 🗑️ ИЗПУСКАНЕ НА ТАБЛИЦА: Спадping вътрешна таблица изтрива както схемата, така и данните, докато dropping външна таблица премахва само метаданните.
  • 🔒 Вътрешното е собственост на: Вътрешна или управлявана таблица се намира в директорията на хранилището, а Hive контролира пълния ѝ жизнен цикъл.
  • 🔗 Външното е цитирано: Външна таблица сочи към файлове, които други инструменти също четат, така че тези файлове да оцеляват след премахването.
  • ???? Проверете типа: DESCRIBE FORMATTED отчита MANAGED_TABLE или EXTERN_TABLE, което премахва всякакви догадки преди отпадане.

Команди за създаване, промяна и премахване на таблица в Hive с примери

Операции с таблици, като създаване, промяна и премахванеping таблиците в Hive могат да се видят в това ръководство. Всяка операция е показана първо като активна сесия, след това като оператор за многократна употреба.

Как да създадете, промените и премахнете таблица в Hive

На екранната снимка по-долу създаваме таблица с колони и променяме името на таблицата.

  1. Създаване на таблица guru_sample с две имена на колони, като например „empid“ и „empname“
  2. Показване на таблици, налични в базата данни guru99
  3. guru_sample показване под таблици
  4. Промяна на таблицата „guru_sample“ като „guru_sampleNew“
  5. Отново, когато изпълните командата „show“, тя ще покаже новото име guru_sampleNew

Сесията по-долу изпълнява всичките пет стъпки по ред в кошер> подканата, а двете извиквания на SHOW TABLES преди и след преименуването правят ефекта видим.

Сесия на Hive създава guru_sample и го преименува на guru_sampleNew

Спадping таблица guru_sampleNew:

Един единствен оператор DROP TABLE премахва преименуваната таблица и Hive отговаря с OK.

Падане на черупка от кошерping таблицата guru_sampleNew с отговор OK

Синтаксис и общи клаузи на Hive CREATE TABLE

Горният пример използва възможно най-кратката форма. Документираният оператор приема няколко незадължителни клаузи и всяка от тях определя нещо, което примерът оставя по подразбиране.

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  [(col_name data_type [COMMENT col_comment], ...)]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type, ...)]
  [CLUSTERED BY (col_name, ...) INTO num_buckets BUCKETS]
  [ROW FORMAT row_format]
  [STORED AS file_format]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)];
Клауза Какво контролира
ВЪНШЕН Създава външна таблица, така че DROP оставя файловете с данни на място
ВРЕМЕННО Създава таблица с обхват на сесията, която изчезва след края на сесията.
АКО НЕ СЪЩЕСТВУВА Потиска грешката, когато таблица с това име вече съществува
РАЗДЕЛЕНО ПО Разделя таблицата на една директория за всяка ключова стойност
ГРУПИРАНИ ОТ … В n КОФИ Хешира редове във фиксиран брой файлове
ФОРМАТ НА РЕД / ЗАПАЗЕН КАТО Задава разделителя или SerDe и файловия формат, като например TEXTFILE, ORC или Parquet
МЕСТОПОЛОЖЕНИЕ Насочва таблицата към специфичен HDFS път, вместо към пътя по подразбиране на хранилището.
TBLPROPERTIES Прикачва двойки ключ-стойност на метаданни, включително external.table.purge

Свързана форма, СЪЗДАВАНЕ НА ТАБЛИЦА new_table ПО ИЗГЛЕД НА existing_table, копира схема без да копира редове. Структурни клаузи като PARTITIONED BY и CLUSTERED BY са разгледани подробно в ръководството за Прегради и кофи за кошери.

Видове таблици и тяхното използване

Що се отнася до таблиците, това е точно както при традиционните релационни бази данни. Функционалности като филтриране и съединения могат да се изпълняват върху таблиците.

Hive работи с два вида таблични структури, вътрешни и външни таблици, в зависимост от зареждането и дизайна на схемата в КошерИзборът не е козметичен: той решава кой е собственик на файловете с данни и какво се случва с тях, когато таблицата бъде премахната.

Вътрешни таблици в Hive

  • Вътрешната таблица е тясно свързана по природа. В този тип таблица първо трябва да създадем таблицата и да заредим данните.
  • Можем да наречем това данни в схемата.
  • По капкаping от тази таблица ще бъдат премахнати както данните, така и схемата.
  • Съхраненото местоположение на тази таблица ще бъде в /user/hive/warehouse.
  • Вътрешните таблици се наричат ​​още управлявани таблици и само те поддържат транзакции TRUNCATE, ARCHIVE, MERGE, CONCATENATE и ACID.

Кога да изберете вътрешна маса?

  • Ако данните за обработка са налични в локалната файлова система
  • Ако искаме Hive да управлява пълния жизнен цикъл на данните, включително изтриването

Примерен кодов фрагмент за вътрешна таблица

  1. За да създадете вътрешна таблица
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Заредете данните във вътрешна таблица
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Покажете съдържанието на таблицата
        Hive>select * from guruhive_internaltable;
  4. За да премахнете вътрешната маса
        Hive>DROP TABLE guruhive_internaltable;

Ако сте премахнали guruhive_internaltable, включително метаданните и данните му, те ще бъдат изтрити от Hive. Освен ако не е зададена опцията PURGE, файловете се преместват в кошчето на HDFS, вместо да се премахват веднага.

От следващата екранна снимка можем да наблюдаваме изхода на всичките четири оператора в една сесия, завършваща с успешното изтриване.

Създаване, зареждане, заявки и пускане на сесия на Hiveping guruhive_internaltable

В горния код и от екранната снимка правим следните неща,

  • Създайте вътрешна таблица
  • Заредете данните във вътрешна таблица
  • Покажете съдържанието на таблицата
  • За да премахнете вътрешната маса

Външни таблици в Hive

  • Външната таблица е слабо свързана по природа. Данните ще бъдат достъпни в HDFS. Таблицата ще бъде създадена върху данни от HDFS.
  • С други думи, можем да кажем, че създава схема върху данни.
  • По време на паданетоping таблицата, в която се премахва само схемата, данните ще останат достъпни в HDFS както преди.
  • Външните таблици предоставят опция за създаване на множество схеми за данните, съхранявани в HDFS, вместо да изтриват данните всеки път, когато схемата се актуализира
  • От Hive 4.0.0, задаването на свойството на таблицата external.table.purge на true кара DROP да изтрива и данните.

Кога да изберете външна маса?

  • Ако данните за обработка са налични в HDFS
  • Полезно, когато файловете се използват извън Hive

Примерен кодов фрагмент за външна таблица

  1. Създаване на външна таблица
    Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
    	 Row format delimited
    	 Fields terminated by '\t'
    	 LOCATION '/user/guru99hive/guruhive_external';
  2. Ако не посочваме местоположението по време на създаването на таблицата, можем да заредим данните ръчно.
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Покажете съдържанието на таблицата
      Hive>select * from guruhive_external;
  4. За да премахнете външната таблица
      Hive>DROP TABLE guruhive_external;

От следващата екранна снимка можем да наблюдаваме резултата. Обърнете внимание, че пускането в края премахва само схемата – файлът под пътя LOCATION остава недокоснат.

Създаване, зареждане, заявки и пускане на сесия на Hiveping guruhive_external

В горния код правим следните неща

  • Създайте външна таблица
  • Заредете данните във външна таблица
  • Покажете съдържанието на таблицата
  • Спадping външна маса

Разлика между вътрешни и външни таблици

Особеност вътрешен Външен
схема Данни за схемата Схема за данни
Място за съхранение /потребител/кошер/склад Местоположението на HDFS е дадено от LOCATION
Наличност на данните В локалната файлова система В HDFS
Ефект на DROP Изтрива схема и данни Изтрива само схемата, освен ако external.table.purge е true
Поддръжка на TRUNCATE Подкрепа Не се поддържа
ACID транзакции Подкрепа Не се поддържа

- Документация за Apache Hive Правилото е ясно формулирано: Hive приема, че притежава данните за управляваните таблици и приема, че не притежава данните за външните, и всяка разлика по-горе следва от това единствено предположение.

Справочник на командите ALTER TABLE и DROP TABLE

Снимките на екрана по-горе показват само преименуване и пускане. Това са операторите, към които практикуващият посяга най-често на съществуваща маса.

Изявление Цел
ПРОМЕНИ ТАБЛИЦАТА име_на_таблица ПРЕИМЕНУВАЙ В ново_име; Преименува таблицата; за управлявана таблица това също премества нейната HDFS директория
ALTER TABLE име_на_таблица ДОБАВИ КОЛОНИ (име_на_колона тип_данни); Добавя една или повече колони в края на схемата
ПРОМЯНА НА ТАБЛИЦА име_на_таблица ПРОМЯНА НА КОЛОНА старо_име ново_име тип_данни; Преименува колона или променя типа ѝ
ПРОМЕНИ ТАБЛИЦАТА име_на_таблица ЗАМЕНИ КОЛОНИ (…); Заменя целия списък с колони с нов
ALTER TABLE име_на_таблица SET TBLPROPERTIES ('EXTERN'='TRUE'); Преобразува управлявана таблица във външна, а FALSE я обръща
DROP TABLE [АКО СЪЩЕСТВУВА] име_на_таблица [PURGE]; Премахва таблицата; PURGE пропуска папката „кошче“, така че данните не могат да бъдат възстановени.
TRUNCATE [ТАБЛИЦА] име_на_таблица; Премахва всички редове, но запазва схемата; само управлявани таблици

Две предпазни мерки си струва да бъдат вградени във всеки скрипт. IF EXISTS предотвратява неуспешно премахване на таблица, която вече е била премахната, а DESCRIBE FORMATTED потвърждава дали целта е MANAGED_TABLE или EXTERNAL_TABLE, преди да се изпълни премахването.

Въпроси и Отговори

Изпълнете DESCRIBE FORMATTED table_name. Редът „Тип на таблицата“ отчита или MANAGED_TABLE, или EXTERNAL_TABLE. Проверката преди изтриване е най-евтиният начин да се избегне изтриването на данни, които други задачи все още четат.

Да. ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') обръща типа в метахранилището, а FALSE го обръща обратно. Файловете с данни остават там, където са, така че не е необходимо презареждане.

Обикновено не, само записът в metastore се изтрива. От Hive 4.0.0 нататък обаче, външна таблица, носеща свойството external.table.purge, зададено на true, също получава изтрити данни от DROP, така че първо проверете свойствата.

Обикновената команда CREATE TABLE вече по подразбиране създава управлявана, транзакционна ORC таблица, вместо обикновена текстова таблица. Добавянето на ключовата дума EXTERNAL запазва по-старото, не-ACID поведение в клъстер Hive 3.

TRUNCATE премахва всеки ред, но запазва схемата и работи само с управлявани таблици. DROP също премахва схемата. TRUNCATE е по-безопасният избор, когато дефиницията на таблицата трябва да оцелее след презареждане.

Не. Hive преобразува идентификаторите в малки букви в метахранилището, така че GURU_SAMPLE и guru_sample се отнасят до една и съща таблица. Низовите стойности в данните остават чувствителни към малки и големи букви, поради което сравнението WHERE все още може да пропусне редове.

Да. Функциите за машинно обучение в инструментите за каталог профилират кардиналността на колоните, честотата на нулеви стойности и моделите на заявки, след което предлагат типове данни, файлови формати и ключове за дялове. Третирайте резултата като чернова, тъй като моделът не може да вижда планираните натоварвания.

Copilot завършва CREATE, ALTER и DROP оператори от кратък коментар, а асистентите-агенти могат да създадат цял ​​скрипт за миграция. RevВижте ключовата дума EXTERNAL и всяка опция PURGE, защото грешно предположение там изтрива реални данни.

Обобщете тази публикация с: