Co to Apache Hive i HiveQL na Azure HDInsight?

Apache Hive to system magazynu danych dla usługi Apache Hadoop. Program Hive umożliwia podsumowywowanie, wykonywanie zapytań i analizowanie danych. Zapytania Hive są pisane w języku HiveQL, który jest językiem zapytań podobnym do SQL.

Program Hive umożliwia tworzenie projektu struktury dla danych w dużej mierze nieustrukturyzowanych. Po zdefiniowaniu struktury można używać programu HiveQL do wykonywania zapytań o dane bez znajomości języka Java lub MapReduce.

Usługa HDInsight udostępnia kilka typów klastrów dostosowanych do określonych obciążeń. Następujące typy klastrów są najczęściej używane w przypadku zapytań Hive:

Typ klastra Opis
Zapytanie interakcyjne Klaster Hadoop, który zapewnia funkcję llap (Low Latency Analytical Processing) w celu zwiększenia czasu odpowiedzi na zapytania interakcyjne. Aby uzyskać więcej informacji, zobacz dokument Start with Interactive Query in HDInsight (Rozpoczynanie pracy z Interactive Query hdInsight).
Hadoop Klaster Hadoop dostosowany do obciążeń przetwarzania wsadowego. Aby uzyskać więcej informacji, zobacz dokument Rozpoczynanie pracy z platformą Apache Hadoop w umacie HDInsight.
platforma Spark Apache Spark ma wbudowaną funkcję do pracy z programem Hive. Aby uzyskać więcej informacji, zobacz dokument Start with Apache Spark on HDInsight (Rozpoczynanie pracy z Apache Spark hdInsight).
HBase HiveQL może służyć do wykonywania zapytań dotyczących danych przechowywanych w bazie danych Apache HBase. Aby uzyskać więcej informacji, zobacz dokument Rozpoczynanie pracy z bazą danych Apache HBase w umacie HDInsight.

Jak używać hive

Skorzystaj z poniższej tabeli, aby poznać różne sposoby korzystania z technologii Hive z hdInsight:

Użyj tej metody, jeśli chcesz... ... zapytania interakcyjne ... przetwarzanie wsadowe ... z tego systemu operacyjnego klienta
Narzędzia HDInsight dla Visual Studio Code Linux, Unix, Mac OS X lub Windows
Narzędzia HDInsight dla Visual Studio Windows
widok programu Hive Dowolne (oparte na przeglądarce)
Klient usługi Beeline Linux, Unix, Mac OS X lub Windows
Interfejs API REST   Linux, Unix, Mac OS X lub Windows
Windows PowerShell   Windows

Informacje o języku HiveQL

Odwołanie do języka HiveQL jest dostępne w podręczniku języka.

Hive i struktura danych

Hive rozumie, jak pracować z danymi ustrukturyzowanym i częściowo ustrukturyzowanym. Na przykład pliki tekstowe, w których pola są rozdzielane określonymi znakami. Następująca instrukcja HiveQL tworzy tabelę na danych rozdzielonych spacjami:

CREATE EXTERNAL TABLE log4jLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/example/data/';

Program Hive obsługuje również niestandardowe serializatory/deserializatory (SerDe) dla złożonych lub nieregularnie ustrukturyzowanych danych. Aby uzyskać więcej informacji, zobacz dokument How to use a custom JSON SerDe with HDInsight (Jak używać niestandardowego serde JSON z hdinsight).

Aby uzyskać więcej informacji na temat formatów plików obsługiwanych przez program Hive, zobacz Podręcznik języka (

Tabele wewnętrzne programu Hive a tabele zewnętrzne

Istnieją dwa typy tabel, które można utworzyć za pomocą hive:

  • Wewnętrzne:dane są przechowywane w magazynie danych Hive. Magazyn danych znajduje się w /hive/warehouse/ domyślnym magazynie klastra.

    Użyj tabel wewnętrznych, jeśli ma zastosowanie jeden z następujących warunków:

    • Dane są tymczasowe.
    • Chcesz, aby program Hive zarządzał cyklem życia tabeli i danych.
  • Zewnętrzne:dane są przechowywane poza magazynem danych. Dane mogą być przechowywane w dowolnym magazynie dostępnym dla klastra.

    Użyj tabel zewnętrznych, jeśli ma zastosowanie jeden z następujących warunków:

    • Dane są również używane poza programem Hive. Na przykład pliki danych są aktualizowane przez inny proces (który nie blokuje plików).
    • Dane muszą pozostać w lokalizacji źródłowej, nawet po upuszczeniu tabeli.
    • Potrzebujesz lokalizacji niestandardowej, takiej jak konto magazynu inne niż domyślne.
    • Program inny niż hive zarządza formatem danych, lokalizacją i tak dalej.

Aby uzyskać więcej informacji, zobacz wpis w blogu Hive Internal and External Tables Intro (Wprowadzenie do tabel wewnętrznych i zewnętrznych hive).

Funkcje zdefiniowane przez użytkownika (UDF)

Program Hive można również rozszerzyć za pomocą funkcji zdefiniowanych przez użytkownika (UDF). Funkcja UDF umożliwia implementowanie funkcji lub logiki, których nie można łatwo modelować w programie HiveQL. Przykład użycia funkcji UDF z programem Hive można znaleźć w następujących dokumentach:

Przykładowe dane

Gałąź Hive w umacie HDInsight jest wstępnie załadowana z wewnętrzną tabelą o nazwie hivesampletable . HdInsight udostępnia również przykładowe zestawy danych, których można używać z usługą Hive. Te zestawy danych są przechowywane w /example/data/HdiSamples katalogach i . Te katalogi istnieją w magazynie domyślnym klastra.

Przykładowe zapytanie Programu Hive

Następujące instrukcje HiveQL zawierają kolumny projektu w /example/data/sample.log pliku :

DROP TABLE log4jLogs;
CREATE EXTERNAL TABLE log4jLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/example/data/';
SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs
    WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log'
    GROUP BY t4;

W poprzednim przykładzie instrukcje HiveQL wykonują następujące akcje:

Instrukcja Opis
DROP TABLE Jeśli tabela już istnieje, usuń ją.
TWORZENIE TABELI ZEWNĘTRZNEJ Tworzy nową tabelę zewnętrzną w programie Hive. Tabele zewnętrzne przechowują tylko definicję tabeli w programie Hive. Dane są pozostawiane w oryginalnej lokalizacji i w oryginalnym formacie.
FORMAT WIERSZA Informuje program Hive, w jaki sposób dane są formatowane. W takim przypadku pola w każdym dzienniku są oddzielone spacją.
PRZECHOWYWANE JAKO LOKALIZACJA PLIKU TEKSTOWEGO Informuje program Hive, gdzie są przechowywane dane (katalog) i że example/data są one przechowywane jako tekst. Dane mogą być w jednym pliku lub rozłożyć na wiele plików w katalogu.
SELECT Wybiera liczbę wszystkich wierszy, w których kolumna t4 zawiera wartość [ERROR]. Ta instrukcja zwraca wartość 3, ponieważ istnieją trzy wiersze zawierające tę wartość.
INPUT__FILE__NAME LIKE "%.log" Program Hive próbuje zastosować schemat do wszystkich plików w katalogu. W takim przypadku katalog zawiera pliki, które nie są zgodne ze schematem. Aby zapobiec wyśmiecaniu danych w wynikach, ta instrukcja informuje program Hive, że należy zwracać tylko dane z plików kończących się na .log.

Uwaga

Tabele zewnętrzne powinny być używane, gdy oczekujesz, że dane bazowe zostaną zaktualizowane przez źródło zewnętrzne. Na przykład zautomatyzowany proces przekazywania danych lub MapReduce operacji.

Usunięcie tabeli zewnętrznej nie powoduje usunięcia danych, a jedynie usunięcie definicji tabeli.

Aby utworzyć tabelę wewnętrzną zamiast zewnętrznej, użyj następującego hiveQL:

CREATE TABLE IF NOT EXISTS errorLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
STORED AS ORC;
INSERT OVERWRITE TABLE errorLogs
SELECT t1, t2, t3, t4, t5, t6, t7 
    FROM log4jLogs WHERE t4 = '[ERROR]';

Te instrukcje wykonują następujące akcje:

Instrukcja Opis
CREATE TABLE JEŚLI NIE ISTNIEJE Jeśli tabela nie istnieje, utwórz ją. Ponieważ słowo kluczowe EXTERNAL nie jest używane, ta instrukcja tworzy tabelę wewnętrzną. Tabela jest przechowywana w magazynie danych Hive i jest zarządzana całkowicie przez usługę Hive.
PRZECHOWYWANE JAKO ORC Przechowuje dane w formacie ORC (Optimized Row Columnar). ORC to wysoce zoptymalizowany i wydajny format do przechowywania danych Hive.
INSERT OVERWRITE... WYBIERZ Wybiera wiersze z tabeli log4jLogszawierającej wartość [ERROR],a następnie wstawia dane do tabeli errorLogs.

Uwaga

W przeciwieństwie do tabel zewnętrznych usunięcie tabeli wewnętrznej powoduje również usunięcie danych bazowych.

Zwiększanie wydajności zapytań programu Hive

Apache Tez

Apache Tez to framework, który umożliwia aplikacjom intensywnie przetwarzacym dane, takim jak Hive, znacznie wydajniejsze uruchamianie na dużą skalę. Aplikacja Tez jest domyślnie włączona. Dokument Apache Hive projektu aplikacji Tez zawiera szczegółowe informacje o wyborach implementacji i konfiguracjach dostrajania.

Przetwarzanie analityczne o małych opóźnieniach (LLAP)

LLAP (czasami nazywane długim czasem na żywo i proces) to nowa funkcja w programie Hive 2.0, która umożliwia buforowanie zapytań w pamięci. LlAP sprawia, że zapytania Hive są znacznie szybsze, nawet 26 razy szybciej niż Hive 1.x w niektórych przypadkach.

Usługa HDInsight zapewnia llap w Interactive Query typu klastra. Aby uzyskać więcej informacji, zobacz dokument Rozpoczynanie Interactive Query danych.

Planowanie zapytań programu Hive

Istnieje kilka usług, które mogą służyć do uruchamiania zapytań Hive w ramach zaplanowanego przepływu pracy lub na żądanie.

Azure Data Factory

Azure Data Factory umożliwia korzystanie z hdInsight jako części Data Factory potoku. Aby uzyskać więcej informacji na temat korzystania z programu Hive z potoku, zobacz działanie Transform data using Hive (Przekształcanie danych przy użyciu programu Hive) w Azure Data Factory dokumentacji.

Zadania Hive i SQL Server Integration Services

Możesz użyć SQL Server Integration Services (SSIS) do uruchomienia zadania Hive. Pakiet Azure Feature Pack dla usług SSIS udostępnia następujące składniki, które działają z zadaniami Hive w usłudze HDInsight.

Aby uzyskać więcej informacji, zobacz dokumentację pakietu Azure Feature Pack.

Apache Oozie

Apache Oozie to system przepływu pracy i koordynacji, który zarządza zadaniami usługi Hadoop. Aby uzyskać więcej informacji na temat korzystania z oprogramowania Oozie z programem Hive, zobacz dokument Definiowanie i uruchamianie przepływu pracy przy użyciu oprogramowania Apache Oozie.

Uwaga

Program obsługi Storage Phoenix dla programu Hive nie jest obsługiwany w umacie HDInsight

Następne kroki

Teraz, gdy już wiesz, czym jest program Hive i jak używać go z użyciem hadoop w umacie HDInsight, skorzystaj z poniższych linków, aby poznać inne sposoby pracy z Azure HDInsight.