Zajímá vás, jaké jsou různé typy tabulek Hive a jak se od sebe liší?
Pokud jsme probrali základy tabulek Hive v datových modelech Hive, prozkoumejme nyní hlavní rozdíly mezi interními a externími tabulkami Hive.
V tomto článku probereme dva různé typy tabulek Hive, kterými jsou interní tabulka (Managed table) a externí tabulka. V článku jsou pak vyjmenovány rozdíly mezi interními a externími tabulkami Hive. Ukážeme si také různé případy, kdy můžeme tyto tabulky Hive použít.
Začneme tedy interními tabulkami Hive a externími tabulkami.
Sledujte nejnovější technologické trendy
Přidejte se k DataFlair na Telegramu!!
- Úvod do interních a externích tabulek Hive
- Interní tabulka Úlu
- Vnější tabulka Úlu
- Rozdíl mezi interní a externí tabulkou Hive
- Sémantika načítání
- a. Interní tabulka
- b. Externí tabulka
- Sémantika dropu
- a. Interní tabulka
- b. Externí tabulka
- podpora TRUNCATE
- Podpora ACID
- Query Result Caching
- Kdy použít interní a externí tabulku?
- Interní tabulka Hive
- Externí tabulka Úlu
- Závěr
Úvod do interních a externích tabulek Hive
V zásadě zná Hive dva různé typy tabulek: Interní tabulku a Externí tabulku. Interní tabulka je také známá jako spravovaná tabulka.
Interní nebo Externí tabulky můžeme identifikovat pomocí příkazu DESCRIBE FORMATTED table_name
v Úlu, který podle typu tabulky zobrazí buď MANAGED_TABLE
, nebo EXTERNAL_TABLE
.
Interní tabulka Úlu
Úl vlastní data pro interní tabulky.
Je to výchozí tabulka v Úlu. Když uživatel vytvoří tabulku v systému Hive, aniž by ji určil jako externí, pak se ve výchozím nastavení vytvoří interní tabulka v určitém umístění v systému HDFS.
Ve výchozím nastavení se interní tabulka vytvoří v cestě ke složce podobné adresáři /user/hive/warehouse systému HDFS. Výchozí umístění můžeme při vytváření tabulky přepsat pomocí vlastnosti location.
Pokud zrušíme spravovanou tabulku nebo oddíl, data tabulky a metadata spojená s touto tabulkou budou ze systému HDFS odstraněna.
Vnější tabulka Úlu
Úl nespravuje data vnější tabulky.
Vnější tabulku vytváříme pro vnější použití, jako když chceme použít data mimo Úl.
Vnější tabulky jsou uloženy mimo adresář skladu. Mohou přistupovat k datům uloženým ve zdrojích, jako jsou vzdálená umístění HDFS nebo svazky úložiště Azure.
Kdykoli externí tabulku zrušíme, odstraní se pouze metadata spojená s tabulkou, data tabulky zůstanou v Hive nedotčena.
Externí tabulku můžeme vytvořit zadáním klíčového slova EXTERNAL v příkazu Hive create table.
Rozdíl mezi interní a externí tabulkou Hive
Podívejme se nyní na rozdíl mezi oběma tabulkami Hive. Hlavní rozdíly v interních a externích tabulkách Hive jsou:
Sémantika načítání
Sémantika načítání se v obou tabulkách liší. Podívejme se na rozdíly v sémantice načítání mezi interní a externí tabulkou.
a. Interní tabulka
Pokud načítáme data do interní tabulky, pak Hive přesune data do adresáře skladu.
Například:
V tomto příkladu vytváříme tabulku ‚internaldemo‘. Když do tabulky ‚internaldemo‘ načteme data, pak Hive přesune data do adresáře warehouse.
Návod k instalaci Apache Hive na Ubuntu pro spouštění dotazů Hive.
Nyní načteme data do výše vytvořené interní tabulky.
Při popisu tabulky vidíme, že data tabulky jsou přesunuta do adresáře Hive warehouse.
b. Externí tabulka
Pomocí klíčového slova EXTERNÍ ví Hive, že data tabulky nespravuje, a proto data nepřesouvá do svého adresáře skladu. Hive ani nekontroluje, zda externí umístění v okamžiku jeho definování existuje, nebo ne.
Příklad:
V tomto příkladu vytváříme externí tabulku ‚external_demo‘ na zadaném umístění, kterým je ‚/home/dataflair/‘. Při načítání dat do externí tabulky Úl nepřesune data tabulky do adresáře svého skladu.
Nyní načteme data do výše vytvořené externí tabulky.
Při prohlížení tabulky vidíme, že data tabulky Hive nejsou přesunuta do adresáře Hive warehouse. Jsou uložena v umístění zadaném při vytváření tabulky.
Sémantika dropu
Stejně jako sémantika načítání se i sémantika dropu v obou tabulkách liší. Podívejme se na rozdíl v sémantice drop mezi interní a externí tabulkou.
a. Interní tabulka
Spuštěním interní tabulky se odstraní data tabulky a také metadata spojená s tabulkou.
Například:
V tomto příkladu spouštíme spravovanou tabulku ‚internaldemo‘. Vidíte, že se odstraní jak metadata tabulky, tak i data tabulky.
Data tabulky se také odstraní ze systému HDFS.
b. Externí tabulka
Smazáním externí tabulky se odstraní pouze metadata tabulky. Obsah tabulky zůstane nedotčen.
Příklad:
V tomto příkladu vidíme, že při odstranění externí tabulky ‚external demo‘ je obsah tabulky stále přítomen v umístění HDFS.
podpora TRUNCATE
Příkaz TRUNCATE funguje pouze pro interní tabulku.
Příklad:
V tomto příkladu se snažíme použít příkaz truncate s tabulkou ‚externaldemo‘. Zobrazí se nám chybové hlášení, které říká ‚Nelze zkrátit nespravovanou tabulku externaldemo‘.
Podpora ACID
ACID/transakce funguje pouze pro interní tabulku. Pro externí tabulku nefungují.
Query Result Caching
Query Result Caching, který ukládá výsledky provedeného dotazu Hive pro opakované použití při dalších dotazech, funguje pouze pro interní tabulku.
Takže toto jsou některé rozdíly mezi interní a externí tabulkou Hive.
Podívejme se nyní, kdy použít kterou tabulku Hive.
Kdy použít interní a externí tabulku?
Interní tabulka Hive
Interní tabulku můžeme použít v případech:
- Při generování dočasných tabulek.
- Když je potřeba, aby Hive spravoval životní cyklus tabulky.
- A když nechceme data tabulky po smazání.
Externí tabulka Úlu
Externí tabulku můžeme použít v případech:
- Když nevytváříme tabulku na základě existující tabulky.
- Když je požadováno použití dat mimo Úl. Například soubory s daty jsou čteny a zpracovávány existujícím programem, který soubory nezamkne.
- Když nechceme data tabulky úplně smazat ani po DROP.
- Když data nemají být vlastní Hive.
Takže to vše bylo v interních a externích tabulkách Hive. Doufám, že se vám náš výklad líbil.
Závěr
Po přečtení článku můžeme konstatovat, že tabulky Úlu jsou dvojího typu – interní tabulka, známá také jako spravovaná tabulka, a externí tabulka.
Data interní tabulky dostává do správy Úl. Úl není zodpovědný za správu dat Externí tabulky.
Při smazání interní tabulky Úlu se smažou data i metadata tabulky a při smazání Externí tabulky Úlu se smažou pouze metadata tabulky.
Podívejte se také-
- Různé způsoby konfigurace úložiště Hive Metastore
- Nejlepší knihy o Apache Hive pro výuku Hive pro začátečníky
Nějaké dotazy při práci s interními a externími tabulkami Hive? Ptejte se níže.
Učte se dál!!!