Porównanie między tabelami wewnętrznymi Hive a tabelami zewnętrznymi

Ciekawe, czy znasz różne typy tabel Hive i jak się one od siebie różnią?

Jak już omówiliśmy podstawy tabel Hive w modelach danych Hive, poznajmy teraz główną różnicę między wewnętrznymi i zewnętrznymi tabelami Hive.

W tym artykule zamierzamy omówić dwa różne typy tabel Hive, które są tabelą wewnętrzną (tabela zarządzana) i tabelą zewnętrzną. Artykuł następnie wymienia różnice między tabelami wewnętrznymi Hive i tabelami zewnętrznymi. Zobaczymy również różne przypadki, w których możemy korzystać z tych tabel Hive.

Zacznijmy więc od tabel wewnętrznych Hive i tabel zewnętrznych.

Bądź na bieżąco z najnowszymi trendami technologicznymi
Join DataFlair on Telegram!!

Wprowadzenie do tabel wewnętrznych i zewnętrznych Hive

tabele wewnętrzne i zewnętrzne Hive

Fundamentalnie, Hive zna dwa różne typy tabel: Tabelę wewnętrzną i Tabelę zewnętrzną. Tabela wewnętrzna jest również znana jako tabela zarządzana.

Możemy zidentyfikować tabele wewnętrzne lub zewnętrzne za pomocą instrukcji DESCRIBE FORMATTED table_name w Hive, która wyświetli MANAGED_TABLE lub EXTERNAL_TABLE w zależności od typu tabeli.

Hive Internal Table

Hive jest właścicielem danych dla tabel wewnętrznych.

Jest to domyślna tabela w Hive. Kiedy użytkownik tworzy tabelę w Hive bez określania jej jako zewnętrznej, wtedy domyślnie tabela wewnętrzna zostanie utworzona w określonej lokalizacji w HDFS.

Domyślnie tabela wewnętrzna zostanie utworzona w ścieżce folderu podobnej do katalogu /user/hive/warehouse w HDFS. Możemy zmienić domyślną lokalizację za pomocą właściwości location podczas tworzenia tabeli.

Jeśli upuścimy zarządzaną tabelę lub partycję, dane tabeli i metadane związane z tą tabelą zostaną usunięte z HDFS.

Hive External Table

Hive nie zarządza danymi tabeli zewnętrznej.

Tworzymy tabelę zewnętrzną do użytku zewnętrznego, jak wtedy, gdy chcemy korzystać z danych poza Hive.

Tabele zewnętrzne są przechowywane poza katalogiem magazynu. Mogą one uzyskać dostęp do danych przechowywanych w źródłach takich jak zdalne lokalizacje HDFS lub Azure Storage Volumes.

Gdy upuścimy tabelę zewnętrzną, wtedy tylko metadane związane z tabelą zostaną usunięte, dane tabeli pozostają nietknięte przez Hive.

Możemy utworzyć zewnętrzną tabelę poprzez określenie słowa kluczowego EXTERNAL w instrukcji Hive create table.

Różnica między wewnętrzną i zewnętrzną tabelą Hive

hive internal and external tableshive internal and external tables

Zobaczmy teraz różnicę między obiema tabelami Hive. Główne różnice w tabelach wewnętrznych i zewnętrznych w Hive są następujące:

Semantyka obciążenia

Semantyka obciążenia różni się w obu tabelach. Zobaczmy różnicę w semantyce obciążenia między tabelą wewnętrzną a tabelą zewnętrzną.

a. Tabela wewnętrzna

Gdy ładujemy dane do tabeli wewnętrznej, wtedy Hive przenosi dane do katalogu magazynu.

Na przykład:

W tym przykładzie tworzymy tabelę 'internaldemo’. Kiedy załadujemy dane do tabeli 'internaldemo’, wtedy Hive przenosi dane do katalogu warehouse.

Learn Apache Hive Installation on Ubuntu to run Hive queries.

create internal table - hive internal and external table

Teraz ładowanie danych do wewnętrznej tabeli utworzonej powyżej. load data into internal table - hive internal and external tables

Przy opisie tabeli widzimy, że dane z tabeli są przenoszone do katalogu Hive warehouse.describe internal table - hive internal and external tables

b. Tabela zewnętrzna

Dzięki słowu kluczowemu EXTERNAL, Hive wie, że nie zarządza danymi tabeli, więc nie przenosi danych do swojego katalogu hurtowni. Hive nawet nie sprawdza, czy lokalizacja zewnętrzna w momencie jej definiowania istnieje, czy nie.

Na przykład:

W tym przykładzie tworzymy tabelę zewnętrzną, 'external_demo’ w określonej lokalizacji, która jest '/home/dataflair/’. Podczas ładowania danych do tabeli zewnętrznej, Ul nie przenosi danych tabeli do swojego katalogu magazynowego.

create external table - hive internal and external tables

Teraz ładowanie danych do tabeli zewnętrznej utworzonej powyżej. load data into external table - hive internal and external tables

Przeglądając tabelę widzimy, że dane z tabeli Hive nie są przenoszone do katalogu Hive warehouse. Są one przechowywane w lokalizacji określonej podczas tworzenia tabeli.describe external table - hive internal and external tables

Semantyka drop

Podobnie jak semantyka load, semantyka drop również różni się w obu tabelach. Zobaczmy różnicę w semantyce drop między tabelą wewnętrzną a zewnętrzną.

a. Tabela wewnętrzna

Upuszczenie tabeli wewnętrznej spowoduje usunięcie danych tabeli, jak również metadanych powiązanych z tabelą.

Na przykład:

W tym przykładzie usuwamy zarządzaną tabelę 'internaldemo’. Można zauważyć, że spowoduje to usunięcie zarówno metadanych tabeli, jak i danych tabeli.

drop internal table - hive internal and external tables

locating hive internal table - hive internal and external tables

Dane tabeli również zostaną usunięte z HDFS.

b. Tabela zewnętrzna

Usuwanie tabeli zewnętrznej powoduje usunięcie tylko metadanych tabeli. Zawartość tabeli pozostaje nietknięta.

Na przykład:

W tym przykładzie widzimy, że po usunięciu tabeli zewnętrznej 'external demo’, zawartość tabeli jest nadal obecna w lokalizacji HDFS.

usuwanie tabeli zewnętrznej - tabele ulowe

lokalizacja tabeli zewnętrznej - tabele ulowe

Obsługa polecenia TRUNCATE

Polecenie TRUNCATE działa tylko dla tabeli wewnętrznej.

Na przykład:

W tym przykładzie próbujemy użyć polecenia truncate z tabelą 'externaldemo’. Otrzymamy komunikat o błędzie, który mówi 'Cannot truncate non-managed table externaldemo’.

truncate external table - hive tables

ACID Support

ACID/transactional działa tylko dla tabeli wewnętrznej. Nie działają one dla tabeli zewnętrznej.

Query Result Caching

Query Result Caching, który zapisuje wyniki wykonanego zapytania Hive do ponownego użycia w kolejnych zapytaniach działa tylko dla tabeli wewnętrznej.

Więc są to niektóre różnice pomiędzy tabelą wewnętrzną Hive a tabelą zewnętrzną.

Zobaczmy teraz kiedy używać której tabeli Hive.

Kiedy używać tabeli wewnętrznej i zewnętrznej?

Hive Internal Table

Możemy użyć tabeli wewnętrznej w przypadkach:

  • Gdy generujemy tabele tymczasowe.
  • Gdy wymagane jest, aby Hive zarządzał cyklem życia tabeli.
  • I gdy nie chcemy danych tabeli po usunięciu.

Hive External Table

Zewnętrznej tabeli możemy użyć w przypadkach:

  • Gdy nie tworzymy tabeli na podstawie istniejącej tabeli.
  • Gdy wymagane jest użycie danych spoza Hive. Na przykład, pliki danych są odczytywane i przetwarzane przez istniejący program, który nie blokuje plików.
  • Gdy nie chcemy całkowicie usunąć danych tabeli nawet po DROP.
  • Gdy dane nie powinny być własne przez Hive.

Więc, to wszystko było w tabelach wewnętrznych i zewnętrznych Hive. Mam nadzieję, że spodobało Ci się nasze wyjaśnienie.

Wnioski

Po przeczytaniu artykułu, możemy stwierdzić, że tabele Hive są dwóch typów – tabela wewnętrzna, znana również jako tabela zarządzana, oraz tabela zewnętrzna.

Dane tabeli wewnętrznej są zarządzane przez Hive. Hive nie jest odpowiedzialny za zarządzanie danymi tabeli zewnętrznej.

Przy usuwaniu tabeli wewnętrznej Hive, dane tabeli i metadane zostaną usunięte, a przy usuwaniu tabeli zewnętrznej Hive, tylko metadane tabeli zostaną usunięte.

Zobacz także-

  • Różne sposoby konfiguracji Hive Metastore
  • Najlepsze książki Apache Hive do nauki Hive dla początkujących

Jakieś pytania podczas pracy z wewnętrznymi i zewnętrznymi tabelami Hive? Zapytaj poniżej.

Keep Learning!!!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.