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
- Hive Internal Table
- Hive External Table
- Różnica między wewnętrzną i zewnętrzną tabelą Hive
- Semantyka obciążenia
- a. Tabela wewnętrzna
- b. Tabela zewnętrzna
- Semantyka drop
- a. Tabela wewnętrzna
- b. Tabela zewnętrzna
- Obsługa polecenia TRUNCATE
- ACID Support
- Query Result Caching
- Kiedy używać tabeli wewnętrznej i zewnętrznej?
- Hive Internal Table
- Hive External Table
- Wnioski
Wprowadzenie do tabel wewnętrznych i zewnętrznych 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
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.
Teraz ładowanie danych do wewnętrznej tabeli utworzonej powyżej.
Przy opisie tabeli widzimy, że dane z tabeli są przenoszone do katalogu Hive warehouse.
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.
Teraz ładowanie danych do tabeli zewnętrznej utworzonej powyżej.
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.
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.
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.
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’.
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!!!