Hive Tutorial - Hive Architecture and NASA Case Study



Ten blog samouczka Hive zawiera dogłębną wiedzę na temat architektury Hive i modelu danych Hive. Wyjaśnia również studium przypadku NASA dotyczące Apache Hive.

Samouczek Apache Hive: wprowadzenie

Hive to rygorystycznie używane w branży narzędzie do analizy dużych zbiorów danych i świetne narzędzie do rozpoczęcia pracy z. W tym samouczku blogu Hive omówimy szczegółowo Apache Hive. Apache Hive to narzędzie do magazynowania danych w , który udostępnia język podobny do SQL do wykonywania zapytań i analizowania dużych zbiorów danych. Motywacją do rozwoju Hive jest bezproblemowa ścieżka nauki dla programistów i analityków SQL. Hive jest nie tylko zbawieniem dla ludzi ze środowisk pozaprogramowych, ale także ogranicza pracę programistów, którzy spędzają długie godziny na pisaniu programów MapReduce. W tym blogu samouczka Apache Hive omówię:





Samouczek Apache Hive: Co to jest Hive?

Apache Hive to system hurtowni danych zbudowany na platformie Hadoop i służy do analizowania danych ustrukturyzowanych i częściowo ustrukturyzowanych.Hive wyodrębnia złożoność Hadoop MapReduce. Zasadniczo zapewnia mechanizm projektowania struktury danych i wykonywania zapytań napisanych w języku HQL (Hive Query Language), które są podobne do instrukcji SQL. Wewnętrznie te zapytania lub HQL są konwertowane w celu zmniejszenia liczby zadań mapowania przez kompilator Hive. Dlatego nie musisz się martwić pisaniem złożonych programów MapReduce do przetwarzania danych za pomocą Hadoop. Jest skierowany do użytkowników dobrze znających język SQL. Apache Hive obsługuje język definicji danych (DDL), język manipulacji danymi (DML) i funkcje zdefiniowane przez użytkownika (UDF).

Samouczek Hive dla początkujących | Zrozumienie roju w głębi | Edureka



SQL + Hadoop MapReduce = HiveQL

Samouczek Apache Hive: Story of Hive - od Facebooka do Apache

Przykład zastosowania Facebooka - samouczek Hive - EdurekaFiga : Samouczek Hive - przypadek użycia Facebooka

Wyzwania na Facebooku: wykładniczy wzrost danych

Przed 2008 rokiem cała infrastruktura przetwarzania danych na Facebooku była zbudowana wokół hurtowni danych opartej na komercyjnych RDBMS. Te infrastruktury były w stanie zaspokoić potrzeby Facebooka w tamtym czasie. Ponieważ jednak dane zaczęły rosnąć bardzo szybko, zarządzanie i przetwarzanie tego ogromnego zbioru danych stało się ogromnym wyzwaniem. Według artykułu na Facebooku dane przeskalowano z zestawu danych o pojemności 15 TB w 2007 r. Do 2 PB danych w 2009 r. Ponadto wiele produktów Facebooka obejmuje analizę danych, takich jak Audience Insights, Facebook Lexicon, Facebook Ads itp. potrzebował skalowalnego i ekonomicznego rozwiązania, aby poradzić sobie z tym właśnie problemem, i dlatego zaczął używać platformy Hadoop.



Demokratyzacja Hadoop - MapReduce

Jednak wraz ze wzrostem danych złożoność kodów Map-Reduce rosła proporcjonalnie. Dlatego szkolenie ludzi bez doświadczenia w programowaniu w zakresie pisania programów MapReduce stało się trudne. Ponadto, aby wykonać prostą analizę, trzeba napisać sto wierszy kodu MapReduce. Ponieważ SQL był szeroko stosowany przez inżynierów i analityków, w tym przez Facebooka, umieszczenie SQL na szczycie Hadoop wydawało się logicznym sposobem na udostępnienie Hadoop użytkownikom z tłem SQL.

W związku z tym zdolność SQL do spełnienia większości wymagań analitycznych i skalowalność Hadoop dały początek Apache Hive co pozwala na wykonywanie zapytań podobnych do SQL na danych obecnych w HDFS. Później projekt Hive został udostępniony jako open source w sierpniu 2008 roku przez Facebooka i jest dostępny bezpłatnie jako Apache Hive dzisiaj.

Przyjrzyjmy się teraz funkcjom lub zaletom Hive, dzięki którym jest tak popularny.

Samouczek Apache Hive: Zalety Hive

  • Przydatne dla osób, które nie mają doświadczenia w programowaniu, ponieważ eliminuje potrzebę pisania złożonego programu MapReduce.
  • Rozciągliwy i skalowalne radzenie sobie z rosnącą ilością i różnorodnością danych bez wpływu na wydajność systemu.
  • Jest to wydajne narzędzie ETL (Extract, Transform, Load).
  • Hive obsługuje dowolną aplikację kliencką napisaną w języku Java, PHP, Python, C ++ lub Ruby, udostępniając jej Serwer Thrift . (Możesz użyć tych języków po stronie klienta, wbudowanych w SQL, aby uzyskać dostęp do bazy danych, takiej jak DB2 itp.).
  • Ponieważ informacje metadanych Hive są przechowywane w RDBMS, znacznie skraca to czas wykonywania kontroli semantycznych podczas wykonywania zapytania.

Samouczek Apache Hive: Gdzie używać Apache Hive?

Apache Hive wykorzystuje oba światy, tj. SQL Database System i struktura. Dlatego jest używany przez ogromną rzeszę firm. Jest używany głównie do hurtowni danych, gdzie można przeprowadzać analizy i eksplorację danych, które nie wymagają przetwarzania w czasie rzeczywistym. Niektóre pola, w których można używać Apache Hive, są następujące:

  • Magazyn danych
  • Analiza ad-hoc

Jak to zostało powiedziane, nie możesz klaskać tylko jedną ręką, tj. Nie możesz rozwiązać każdego problemu za pomocą jednego narzędzia. Dlatego możesz połączyć Hive z innymi narzędziami, aby używać go w wielu innych domenach. Na przykład Tableau wraz z Apache Hive można wykorzystać do wizualizacji danych, integracja Apache Tez z Hive zapewni możliwości przetwarzania w czasie rzeczywistym itp.
Idąc dalej w tym blogu samouczka Apache Hive, rzućmy okiem na studium przypadku NASA, w którym dowiesz się, jak Hive rozwiązał problem, z którym borykali się naukowcy NASA podczas przeprowadzania oceny modeli klimatycznych.

Samouczek dotyczący ula: studium przypadku NASA

Model klimatu to matematyczna reprezentacja systemów klimatycznych na podstawie różnych czynników, które mają wpływ na klimat Ziemi. Zasadniczo opisuje interakcję różnych czynników klimatycznych, takich jak ocean, słońce, atmosfera itpzapewniają wgląd w dynamikę systemu klimatycznego. Służy do prognozowania warunków klimatycznych poprzez symulację zmian klimatu w oparciu o czynniki wpływające na klimat. Laboratorium napędu odrzutowego NASA opracowało Regionalny System Oceny Modelu Klimatu (RCMES) do analizy i oceny modelu wyjściowego klimatu na podstawie danych teledetekcyjnych obecnych w różnych zewnętrznych repozytoriach.

RCMES (Regionalny system oceny modeli klimatu) składa się z dwóch elementów:

  • RCMED (baza danych oceny regionalnego modelu klimatu):

Jest to skalowalna baza danych w chmurze, która ładuje dane teledetekcyjne i ponownie analizuje dane związane z klimatem za pomocą ekstraktorów, takich jak ekstraktory Apache OODT, Apache Tika itp. Na koniec przekształca dane jako model punktów danych, który ma postać (szerokość geograficzna , długość geograficzna, czas, wartość, wysokość) i zapisuje je w bazie danych My SQL. Klient może pobrać dane obecne w RCMED, wykonując zapytania dotyczące przestrzeni / czasu. Opis takich zapytań nie jest dla nas teraz istotny.

  • RCMET (zestaw narzędzi do oceny regionalnych modeli klimatu):

Zapewnia użytkownikowi możliwość porównania danych referencyjnych obecnych w RCMED z danymi wyjściowymi modelu klimatycznego pobranymi z innych źródeł w celu wykonania różnego rodzaju analiz i ocen. Możesz zapoznać się z poniższym obrazem, aby zrozumieć architekturę RCMES.

Dane referencyjne w RCMED pochodzą z teledetekcji satelitarnej, zgodnie z różnymi parametrami wymaganymi do oceny modelu klimatycznego. Na przykład - AIRS (Atmospheric Infrared Sounder) zapewnia parametry, takie jak temperatura powietrza na powierzchni, temperatura i geopotencjał, TRMM (Tropical Rainfall Measurement Mission) zapewnia miesięczne opady itp.

Problemy napotykane przez NASA podczas korzystania z systemu bazy danych MySQL:

  • Po załadowaniu bazy danych MySQL z 6 miliardami krotek formularza (szerokość, długość, czas, wartość punktu danych, wysokość), system zawiesił się, jak pokazano na powyższym obrazku.
  • Nawet po podzieleniu całej tabeli na mniejsze podzbiory, system generował ogromne narzuty podczas przetwarzania danych.

Potrzebowali więc skalowalnego rozwiązania, które będzie w stanie przechowywać i przetwarzać tak ogromne ilości danych za pomocą SQL, podobnie jak zapytania. W końcu zdecydowali się użyć Apache Hive, aby przezwyciężyć powyższe problemy.

W jaki sposób Apache Hive może rozwiązać problem?

Zobaczmy teraz, jakie cechy przekonały zespół JPL NASA do włączenia Apache Hive jako integralnej części strategii rozwiązania:

  • Ponieważ Apache Hive działa na platformie Hadoop, jest skalowalny i może przetwarzać dane w sposób rozproszony i równoległy.
  • Udostępnia język zapytań Hive, który jest podobny do SQL, a przez to łatwy do nauczenia.

Wdrożenie ula:

Poniższy obraz wyjaśnia architekta RCMES z integracją Apache Hive:

Seria Fibonacciego C ++

Figa : Samouczek Hive - Architektura RCMES z Apache Hive

Powyższy obraz przedstawia wdrożenie gałęzi Apache w RCMES. Podczas wdrażania Apache Hive zespół NASA podjął następujące kroki:

  • Zainstalowali Hive przy użyciu Cloudera i Apache Hadoop, jak pokazano na powyższym obrazku.
  • Użyli Apache Sqoop do pozyskiwania danych do Hive z bazy danych MySQL.
  • Zaimplementowano opakowanie Apache OODT w celu wykonywania zapytań w Hive i pobierania danych z powrotem do RCMET.

Wstępne obserwacje porównawcze z Hive:

  • Początkowo załadowali 2,5 miliarda punktów danych do jednej tabeli i wykonali zapytanie zliczające. Na przykład, Rój> wybierz count (datapoint_id) z dataPoint. Policzenie wszystkich rekordów zajęło 5-6 minut (pełne 6,8 miliarda rekordów 15-17 minut).
  • Faza redukcji była szybka, ale faza mapy zajęła 95% całkowitego czasu przetwarzania. Używali sześciu ( 4x czterordzeniowy ) systemy z 24 GB pamięci RAM (w przybliżeniu) w każdym z systemów.
  • Nawet po dodaniu większej liczby maszyn, zmianie rozmiaru bloku HDFS (64 MB, 128 MB, 256 MB) i zmianie wielu innych zmiennych konfiguracyjnych (io.sortować.czynnik, ja.sortować.mb), nie odnieśli dużego sukcesu, skracając czas potrzebny do ukończenia liczenia.

Informacje od członków społeczności Hive:

Wreszcie członkowie społeczności Hive przybyli na ratunek i przedstawili różne spostrzeżenia, aby rozwiązać problemy z ich obecnymi implementacjami Hive:

  • Wspomnieli, że prędkość odczytu HDFS wynosi w przybliżeniu 60 MB / s w porównaniu do 1 GB / s w przypadku dysku lokalnego, w zależności od pojemności sieci i obciążenia NameNode.
  • Członkowie to zasugerowali 16 mapperów będą wymagane w ich bieżącym systemie, aby odpowiadały wydajności we / wy lokalnego zadania innego niż Hadoop.
  • Zasugerowali również zmniejszenie podzielony rozmiar dla każdego mapera, aby zwiększyć liczbęzmappers, a tym samym zapewnia większą równoległość.
  • Wreszcie członkowie społeczności kazali im, aby to zrobili użyj licznika (1) zamiast odnosić się do liczyć ( datapoint_id) . Dzieje się tak, ponieważ w przypadku zliczania (1) nie ma kolumny odniesienia, a zatem nie ma dekompresji i deserializacji podczas zliczania.

Wreszcie NASA była w stanie dostosować klaster Hive do swoich oczekiwań, biorąc pod uwagę wszystkie sugestie członków społeczności Hive. W związku z tym byli w stanie przeszukiwać miliardy wierszy w zaledwie 15 sekund przy użyciu wspomnianych powyżej konfiguracji systemu.

jakie są instancje w java

Samouczek Apache Hive: Architektura Hive i jej składniki

Na poniższym obrazie opisano architekturę Hive i przepływ, w którym zapytanie jest przesyłane doUli ostatecznie przetworzone przy użyciu struktury MapReduce:

Figa : Samouczek Hive - Architektura Hive

Jak pokazano na powyższym obrazku, architekturę Hive można podzielić na następujące komponenty:

  • Klienci Hive: Hive obsługuje aplikacje napisane w wielu językach, takich jak Java, C ++, Python itp. Przy użyciu sterowników JDBC, Thrift i ODBC. Dlatego zawsze można napisać aplikację kliencką hive w wybranym przez siebie języku.
  • Usługi ula: Apache Hive zapewnia różne usługi, takie jak CLI, interfejs sieciowy itp. Do wykonywania zapytań. Wkrótce omówimy każdy z nich w tym samouczku na blogu Hive.
  • Ramy przetwarzania i zarządzanie zasobami: Wewnętrznie,Hive używa struktury Hadoop MapReduce jako de facto silnika do wykonywania zapytań. jest odrębnym tematem samym w sobie i dlatego nie jest tutaj omawiany.
  • Rozproszone przechowywanie: Ponieważ Hive jest instalowany na platformie Hadoop, używa podstawowego systemu plików HDFS dla magazynu rozproszonego. Możesz zapoznać się z Blog HDFS aby dowiedzieć się więcej na ten temat.

Teraz przyjrzyjmy się dwóm pierwszym głównym komponentom architektury ula:

1. Klienci Hive:

Apache Hive obsługuje różne typy aplikacji klienckich do wykonywania zapytań w gałęzi. Tych klientów można podzielić na trzy typy:

  • Klienci Thrift: Ponieważ serwer Hive jest oparty na Apache Thrift, może obsługiwać żądania ze wszystkich tych języków programowania, które obsługują Thrift.
  • Klienci JDBC: Hive umożliwia aplikacjom Java łączenie się z nim przy użyciu sterownika JDBC zdefiniowanego w klasie org.apacz.hadoop.hive.jdbc.HiveDriver.
  • Klienci ODBC: Sterownik Hive ODBC umożliwia aplikacjom obsługującym protokół ODBC łączenie się z Hive. (Podobnie jak sterownik JDBC, sterownik ODBC używa Thrift do komunikacji z serwerem Hive).

2. Usługi ula:

Hive zapewnia wiele usług, jak pokazano na powyższym obrazku. Przyjrzyjmy się każdemu z nich:

  • Hive CLI (interfejs wiersza poleceń): Jest to domyślna powłoka udostępniana przez Hive, w której można bezpośrednio wykonywać zapytania i polecenia programu Hive.
  • Interfejsy WWW Apache Hive: Oprócz interfejsu wiersza poleceń Hive udostępnia również graficzny interfejs użytkownika oparty na sieci Web do wykonywania zapytań i poleceń programu Hive.
  • Serwer ula: Serwer Hive jest oparty na Apache Thrift i dlatego jest również nazywany serwerem Thrift, który umożliwia różnym klientom przesyłanie żądań do Hive i pobieranie ostatecznego wyniku.
  • Sterownik Apache Hive: Odpowiada za otrzymywanie przez klienta zapytań przesyłanych przez CLI, interfejs WWW, Thrift, ODBC lub JDBC. Następnie sterownik przekazuje zapytanie do kompilatora, w którym odbywa się parsowanie, sprawdzanie typów i analiza semantyczna za pomocą schematu obecnego w metastore. W następnym kroku zoptymalizowany plan logiczny jest generowany w postaci DAG (Directed Acyclic Graph) zadań redukcji map i zadań HDFS. Na koniec aparat wykonawczy wykonuje te zadania w kolejności ich zależności przy użyciu platformy Hadoop.
  • Metastore: Możesz pomyśleć o metastorejako centralne repozytorium do przechowywania wszystkich informacji o metadanych Hive. Metadane gałęzi zawierają różne typy informacji, takie jak struktura tabel i partycjiwraz z kolumną, typem kolumny, serializatorem i deserializatorem, które są wymagane do operacji odczytu / zapisu na danych obecnych w HDFS. Metastoreskłada się z dwóch podstawowych jednostek:
    • Usługa udostępniająca metastoredostęp do innychrUsługi ula.
    • Magazyn dyskowy dla metadanych, który jest niezależny od magazynu HDFS.

Przyjrzyjmy się teraz różnym sposobom wdrażania metastore Hivew następnej sekcji tego samouczka Hive.

Samouczek Apache Hive: Konfiguracja Metastore

Metastore przechowuje informacje metadanych za pomocą RDBMS i warstwy ORM (Object Relational Model) typu open source o nazwie Data Nucleus, która przekształca reprezentację obiektu w schemat relacyjny i odwrotnie. Powodem wyboru RDBMS zamiast HDFS jest osiągnięcie małego opóźnienia. Metastore możemy zaimplementować w trzech konfiguracjach:

1. Wbudowany magazyn Metastore:

Zarówno usługa metastore, jak i usługa Hive działają domyślnie w tej samej maszynie JVM przy użyciu osadzonej instancji bazy danych Derby, w której metadane są przechowywane na dysku lokalnym. Nazywa się to wbudowaną konfiguracją metastore. W takim przypadku tylko jeden użytkownik może jednocześnie łączyć się z bazą danych metastore. Jeśli uruchomisz drugie wystąpienie sterownika Hive, pojawi się błąd. Jest to dobre do testów jednostkowych, ale nie do praktycznych rozwiązań.

2. Lokalny magazyn Metastore:

Ta konfiguracja pozwala nam mieć wiele sesji Hive, tj. Wielu użytkowników może korzystać z bazy danych metastore w tym samym czasie. Osiąga się to poprzez użycie dowolnej bazy danych zgodnej z JDBC, takiej jak MySQL, która działa na oddzielnej maszynie JVM lub innej maszynie niż usługa Hive i usługa metastore, które działają w tej samej maszynie JVM, jak pokazano powyżej. Ogólnie najpopularniejszym wyborem jest implementacja serwera MySQL jako bazy danych metastore.

3. Zdalny magazyn Metastore:

W konfiguracji zdalnego magazynu metastore usługa metastore działa na własnej, oddzielnej maszynie JVM, a nie w maszynie JVM usługi Hive. Inne procesy komunikują się z serwerem metastore za pomocą interfejsów API Thrift Network. W takim przypadku można mieć jeden lub więcej serwerów metastore, aby zapewnić większą dostępność.Główną zaletą korzystania ze zdalnego magazynu metastore jest brak konieczności udostępniania poświadczeń logowania JDBC każdemu użytkownikowi Hive w celu uzyskania dostępu do bazy danych metastore.

Samouczek Apache Hive: model danych

Dane w Hive można podzielić na trzy typy na poziomie szczegółowym:

  • Stół
  • Przegroda
  • Wiadro

Tabele:

Tabele w gałęzi Hive są takie same, jak tabele obecne w relacyjnej bazie danych. Możesz na nich wykonywać operacje filtrowania, projektowania, łączenia i łączenia. W gałęzi Hive istnieją dwa typy tabel:

1. Zarządzana tabela:

Komenda:

CREATE TABLE (typ_danych kolumna1, typ_danych kolumny2)

LOAD DATA INPATH INTO table managed_table

Jak sama nazwa wskazuje (tabela zarządzana), Hive jest odpowiedzialny za zarządzanie danymi tabeli zarządzanej. Innymi słowy, mówiąc „Hive zarządza danymi” miałem na myśli to, że jeśli załadujesz dane z pliku obecnego w HDFS do gałęzi Zarządzana tabela i wydasz na nim polecenie DROP, tabela wraz z metadanymi zostaną usunięte. A więc dane należące do upuszczonego pliku managed_table nie istnieją już nigdzie w HDFS i nie można ich odzyskać w żaden sposób. Zasadniczo przenosisz dane po wydaniu polecenia LOAD z lokalizacji pliku HDFS do katalogu magazynu Hive.

Uwaga: Domyślna ścieżka katalogu hurtowni to / user / hive / hurtownia. Dane tabeli Hive znajdują się w katalogu_magazynu / nazwa_tabeli (HDFS). Ścieżkę do katalogu hurtowni można również określić w parametrze konfiguracyjnym hive.metastore.warehouse.dir obecnym w hive-site.xml.

2. Tabela zewnętrzna:

Komenda:

CREATE EXTERNAL TABLE (kolumna1 typ_danych, kolumna2 typ_danych) LOCATION „”

ZAŁADUJ DANE WEJŚCIOWE „” DO TABELI

Dla stół zewnętrzny Firma Hive nie jest odpowiedzialna za zarządzanie danymi. W takim przypadku po wydaniu polecenia LOAD Hive przenosi dane do swojego katalogu hurtowni. Następnie Hive tworzy informacje metadanych dla tabeli zewnętrznej. Teraz, jeśli wydasz polecenie DROP na stół zewnętrzny , tylko metadane dotyczące tabeli zewnętrznej zostaną usunięte. Dlatego nadal można odzyskać dane tej bardzo zewnętrznej tabeli z katalogu hurtowni za pomocą poleceń HDFS.

Partycje:

Komenda:

TWORZENIE TABELI nazwa_tabeli (typ_danych_kolumny1, typ_danych_kolumny2) PARTYCJONOWANE PRZEZ (typ_danych partycji1, typ_danych partycji2, & hellip)

Hive organizuje tabele w partycje w celu grupowania razem podobnego typu danych na podstawie kolumny lub klucza partycji. Każda tabela może mieć jeden lub więcej kluczy partycji do identyfikacji określonej partycji. Dzięki temu możemy szybciej zapytać o wycinki danych.

Uwaga: Pamiętaj, że najczęstszym błędem popełnianym podczas tworzenia partycji jest określenie istniejącej nazwy kolumny jako kolumny partycji. Robiąc to, pojawi się błąd - „Błąd w analizie semantycznej: kolumna powtórzona w kolumnach partycjonowania”.

Zrozummy partycjonowanie na przykładzie, w którym mam tabelę student_details zawierającą informacje o studentach jakiejś uczelni inżynierskiej, takie jak identyfikator_ ucznia, imię i nazwisko, wydział, rok itp. Teraz, jeśli przeprowadzę partycjonowanie na podstawie kolumny działu, informacje o wszystkich studentach należące do określonego działu będą przechowywane razem na tej samej partycji. Fizycznie partycja jest niczym innym jak podkatalogiem w katalogu tabeli.

Powiedzmy, że w naszej tabeli student_details mamy dane dotyczące trzech działów - CSE, ECE i Civil. Dlatego będziemy mieć łącznie trzy partycje dla każdego z działów, jak pokazano na poniższym obrazku. Dla każdego działu będziemy mieć wszystkie dane dotyczące tego działu znajdującego się w osobnym podkatalogu w katalogu tabeli Hive. Na przykład wszystkie dane uczniów dotyczące działów CSE będą przechowywane w user / hive / storage / student_details / dept. = CSE. Tak więc zapytania dotyczące studentów CSE musiałyby tylko przejrzeć dane obecne w partycji CSE. To sprawia, że ​​partycjonowanie jest bardzo przydatne, ponieważ zmniejsza opóźnienie zapytań tylko przez skanowanie istotnych dane podzielone na partycje zamiast całego zestawu danych. W rzeczywistości w rzeczywistych implementacjach będziesz mieć do czynienia z setkami TB danych. Wyobraź sobie więc, że skanujesz tę ogromną ilość danych w poszukiwaniu zapytania, gdzie 95% zeskanowane przez Ciebie dane były nieistotne dla Twojego zapytania.

Sugerowałbym, abyś przejrzał bloga Polecenia ula gdzie na przykładzie znajdziesz różne sposoby implementacji partycji.

to związek w Javie

Wiadra:

Polecenia:

CREATE TABLE nazwa_tabeli PARTITIONED BY (typ_danych partycji1, typ_danych partycji2, & hellip.) CLUSTERED BY (nazwa_kolumny1, nazwa_kolumny2,…) SORTED BY (nazwa_kolumny [ASC | DESC],…)] INTO num_buckets BUCKETS

Teraz możesz podzielić każdą partycję lub niepartycjonowaną tabelę na segmenty na podstawie funkcji skrótu kolumny w tabeli. W rzeczywistości każdy zasobnik jest po prostu plikiem w katalogu partycji lub katalogu tabeli (tabela niepartycjonowana). Dlatego, jeśli zdecydowałeś się podzielić partycje na n segmentów, będziesz mieć n plików w każdym katalogu partycji. Na przykład, możesz zobaczyć powyższy obraz, na którym podzieliliśmy każdą partycję na 2 segmenty. Tak więc każda partycja, powiedzmy CSE, będzie miała dwa pliki, w których każdy z nich będzie przechowywać dane ucznia CSE.

Jak Hive rozdziela wiersze do zasobników?

Cóż, Hive określa numer segmentu dla wiersza, korzystając ze wzoru: hash_function (bucketing_column) modulo (num_of_buckets) . Tutaj, hash_function zależy od typu danych kolumny. Na przykład, jeśli dzielisz tabelę na podstawie jakiejś kolumny, powiedzmy user_id, typu danych INT, funkcja hash_function będzie wynosić - funkcja hash (identyfikator_użytkownika ) = wartość całkowita user_id . Załóżmy, że utworzyłeś dwa segmenty, a następnie Hive określi wiersze przechodzące do segmentu 1 w każdej partycji, obliczając: (wartość user_id) modulo (2). Dlatego w tym przypadku wiersze mające identyfikator_użytkownika kończące się parzystą liczbą całkowitą będą znajdować się w tym samym segmencie odpowiadającym każdej partycji. Funkcja hash_function dla innych typów danych jest nieco skomplikowana do obliczenia iw rzeczywistości dla ciągu znaków nie jest ona nawet rozpoznawalna przez człowieka.

Uwaga: Jeśli używasz Apache Hive 0.x lub 1.x, musisz wydać polecenie - set hive.enforce.bucketing = true z terminala Hive przed wykonaniem zasobnika. Umożliwi to uzyskanie prawidłowej liczby reduktorów podczas używania klauzuli klaster po klauzuli do grupowania kolumny. Jeśli tego nie zrobiłeś, może się okazać, że liczba plików, które zostały wygenerowane w katalogu z tabelami, nie jest równa liczbie segmentów. Alternatywnie możesz również ustawić liczbę reduktorów równą liczbie segmentów za pomocą set mapred.reduce.task = num_bucket.

Po co nam wiadra?

Istnieją dwa główne powody wykonywania zasobników na partycję:

  • DO połączenie po stronie mapy wymaga, aby dane należące do unikalnego klucza łączenia były obecne w tej samej partycji. Ale co z tymi przypadkami, w których klucz partycji różni się od łączenia? Dlatego w takich przypadkach można wykonać sprzężenie po stronie mapy, dzieląc tabelę za pomocą klawisza łączenia.
  • Bucketing sprawia, że ​​proces próbkowania jest bardziej wydajny, a zatem pozwala nam skrócić czas zapytania.

Chciałbym zakończyć ten blog z samouczkiem Hive tutaj. Jestem prawie pewien, że po przejrzeniu tego samouczka Hive zdałeś sobie sprawę z prostoty Apache Hive. Od tego czasu nauczyliście się wszystkich podstaw Hive, najwyższy czas zdobyć doświadczenie z Apache Hive. Więc sprawdź następny blog w tej serii blogów samouczków Hive, który dotyczy instalacji Hive i zacznij pracować nad Apache Hive.

Teraz, gdy znasz już Apache Hive i jego funkcje, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka Big Data Hadoop Certification Training pomaga uczniom stać się ekspertami w dziedzinie HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop, wykorzystując przypadki użycia w czasie rzeczywistym w domenie handlu detalicznego, mediów społecznościowych, lotnictwa, turystyki, finansów.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.