Introducere în tabelul extern în stup
Un tabel extern este un tabel care descrie schema sau metadatele fișierelor externe. Fundamental, există două tipuri de tabele în tabele gestionate de stup sau interne și tabele externe. Scopul principal al definirii unui tabel extern este de a accesa și executa interogări privind datele stocate în afara stupului. Aceste fișiere de date pot fi stocate în alte instrumente, cum ar fi Pig, Azure storage Volume (ASV) sau orice locație HDFS la distanță. Hive presupune că nu are nicio proprietate asupra datelor pentru tabele externe și, prin urmare, nu necesită gestionarea datelor ca în tabelele gestionate sau interne. De asemenea, pentru tabelele externe, datele nu sunt șterse la căderea tabelului.
lucrul și crearea tabelelor externe în Hive
implicit, în directorul tabelului Hive este creat sub directorul bazei de date. Excepția este baza de date implicită. Locația user / hive / warehouse nu are un director, astfel încât tabelele bazei de date implicite vor avea directorul său creat direct sub această locație. Este recomandat să creăm tabele externe dacă nu dorim să folosim locația implicită.
începeți cursul gratuit de știință a datelor
Hadoop, știința datelor, statistici& altele
un tabel extern este utilizat în general atunci când datele sunt situate în afara stupului.
să creăm un tabel extern folosind cuvântul cheie „extern” cu comanda de mai jos.
CREATE EXTERNAL TABLE if not exists students
(
Roll_id Int,
Class Int,
Name String,
Rank Int)
Row format delimited fields terminated by ‘,’
Location ‘/data/students_details’;
ieșire:
un tabel extern poate fi creat și prin copierea schemei și a datelor unui tabel existent, cu comanda de mai jos:
CREATE EXTERNAL TABLE if not exists students_v2 LIKE students
Location ‘/data/students_details’;
dacă omitem cuvântul cheie extern, atunci noul tabel creat va fi extern dacă tabelul de bază este extern. În mod similar, dacă tabelul de bază este gestionat cu cuvântul cheie extern, noul tabel creat va fi extern.
pentru a identifica tipul de tabel creat, se poate utiliza clauza DESCRIBE formatat. La sfârșitul descrierii detaliate a tabelului, tipul tabelului de ieșire va fi fie „tabel gestionat”, fie „tabel extern”.
tabelele partiționate ajută la împărțirea datelor în sub-segmente sau partiții logice, făcând performanța interogării mai eficientă. Un tabel partiționat poate fi creat după cum se vede mai jos.
CREATE EXTERNAL TABLE if not exists students
( roll_id Int,
name String,
Rank Int)
partitioned by (class Int)
Row format delimited fields terminated by ‘\t’
ieșire:
pot exista cazuri în care partiția sau structura unui tabel extern este modificată, apoi prin utilizarea acestei comenzi informațiile de metadate pot fi actualizate:
MSCK REPAIR TABLE external_table_name
1. Tabel extern partiționat
în timp ce creați un tabel extern nepartiționat, este necesară clauza de locație. Dar pentru o masă externă partiționată, nu este necesară. Instrucțiunea ALTER TABLE este necesară pentru a adăuga partiții împreună cu clauza locație.
ALTER TABLE students ADD PARTITION (class =10)
Location ‘here://master_server/data/log_messages/2012/01/02’;
din stup v0.8.0 în continuare, mai multe partiții pot fi adăugate în aceeași interogare. De asemenea, locația pentru o partiție poate fi modificată prin interogarea de mai jos, fără a muta sau șterge datele din locația veche.
ALTER TABLE students_v2 partition( class = 10)
Set location ‘s2n://buckets/students_v2/10’;
pentru a plasa o partiție, se folosește interogarea de mai jos:
ALTER TABLE students DROP IF EXISTS PARTITION (class = 12);
această comandă va șterge datele și metadatele partiției pentru tabelele gestionate sau interne. Cu toate acestea, pentru tabelele externe, datele nu sunt șterse.
2. Operații pe tabelul extern
operațiile precum SELECT, JOINS, ORDER BY, GROUP BY, CLUSTER BY și altele sunt implementate pe tabele externe. Tabelele externe pot fi ușor îmbinate cu alte tabele pentru a efectua manipulări complexe de date. Conceptele de partiționare, bucketing și indexare sunt, de asemenea, implementate pe tabele externe în același mod ca și pentru tabele gestionate sau interne. Toate proprietățile de configurare din Hive sunt aplicabile și tabelelor externe. De exemplu, prin setarea skip.antet.linie. Count = 1, putem sări peste rândul antet din fișierul de date.
toate formatele de fișiere precum ORC, AVRO, TEXTFILE, SEQUENCE FILE sau PARQUET sunt acceptate pentru tabelele interne și externe ale Hive. La crearea unui tabel, maparea pozițională este utilizată pentru a insera date în coloană și această ordine este menținută.
tipuri de date în tabele externe: în tabele externe, tipurile de date de colectare sunt, de asemenea, acceptate împreună cu tipurile de date primitive (cum ar fi întreg, șir, caracter). Este necesar să se precizeze delimitatorii elementelor tipurilor de date de colectare (cum ar fi o matrice, struct și hartă).
când se utilizează tabele externe în stup?
în general, tabelele interne sunt create în stup. Dar pentru anumite scenarii, un tabel extern poate fi de ajutor. Acestea sunt:
- când datele sunt plasate în afara locației Hive sau HDFS, crearea unui tabel extern ajută, deoarece celelalte instrumente care pot utiliza tabelul, nu blochează aceste fișiere.
- un tabel extern poate fi creat atunci când datele nu sunt prezente în niciun tabel existent (adică folosind clauza SELECT).
- tabelul extern trebuie creat dacă nu dorim ca Hive să dețină datele sau să aibă alte controale de date.
- tabelul extern previne, de asemenea, orice pierdere accidentală de date, deoarece la căderea unui tabel extern, datele de bază nu sunt șterse. Aceasta acționează ca o caracteristică de securitate în stup. Acesta este motivul pentru care TRUNCATE nu va funcționa și pentru tabelele externe.
caracteristici
există anumite caracteristici în Hive care sunt disponibile numai pentru tabele gestionate sau externe. Acestea sunt:
- comenzi precum ARCHIVE/UNARCHIVE/TRUNCATE/CONCATENATE/MERGE funcționează numai pentru tabelele interne.
- acidul funcționează numai pentru tabele gestionate sau interne.
- clauza DROP va șterge numai metadatele pentru tabele externe. Cu toate acestea, șterge datele subiacente și pentru tabelele interne.
- memorarea în cache a rezultatelor interogării este posibilă numai pentru tabelele gestionate.
- se bazează constrângere este permisă numai pe tabele externe.
- unele caracteristici ale vizualizărilor materializate funcționează numai pentru tabelele gestionate.
concluzie
în acest tutorial, am văzut când și cum să folosească tabele externe în stup. Punctele culminante ale acestui tutorial sunt crearea unui fundal pe tabele, altele decât datele gestionate și analizate în afara stupului.
Articole recomandate
acesta este un ghid pentru tabelul extern în stup. Aici vom discuta despre introducerea tabele externe în stup și caracteristicile, și interogări. Puteți merge, de asemenea, prin alte articole legate de noastre pentru a afla mai multe –
- partiționarea în Hive
- harta Alăturați-vă în Hive
- tipuri de date Hive
- instalare Hive
- ghid pentru Hive Cluster de