Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób używania klienta apache Beeline wiersza polecenia do tworzenia i wykonywania zapytań apache Hive za pośrednictwem połączenia SSH.
Kontekst
Beeline to klient programu Hive dołączony do węzłów głównych klastra usługi HDInsight. W tym artykule opisano, jak używać tego narzędzia za pomocą przykładów przy użyciu zapytania Hive i pliku HiveQL.
Aby nawiązać połączenie z klientem Beeline zainstalowanym w klastrze usługi HDInsight lub zainstalować usługę Beeline lokalnie, postępuj zgodnie z naszym przewodnikiem, aby nawiązać połączenie z usługą Apache Beeline, lub zainstaluj usługę Apache Beeline.
Usługa Beeline używa protokołu JDBC do nawiązywania połączenia z serwerem HiveServer2, usługą hostowaną w klastrze usługi HDInsight. Możesz również użyć rozwiązania Beeline, aby uzyskać zdalny dostęp do programu Hive w usłudze HDInsight za pośrednictwem Internetu. W poniższych przykładach przedstawiono najbardziej typowe parametry połączenia używane do nawiązywania połączenia z usługą HDInsight z usługi Beeline.
Wymagania wstępne dotyczące przykładów
Klaster Hadoop w usłudze Azure HDInsight. Jeśli potrzebujesz klastra, postępuj zgodnie z naszym przewodnikiem, aby utworzyć klaster usługi HDInsight.
Zwróć uwagę na schemat URI dla magazynu podstawowego klastra. Na przykład
wasb://
w przypadku Azure Storage,abfs://
Azure Data Lake Storage Gen2 lubadl://
Azure Data Lake Storage Gen1. Jeśli bezpieczny transfer jest włączony dla usługi Azure Storage, identyfikator URI towasbs://
. Aby uzyskać więcej informacji, zobacz bezpieczny transfer.Klient SSH. Aby uzyskać więcej informacji, zobacz Łączenie się z usługą HDInsight (Apache Hadoop) przy użyciu protokołu SSH. Większość kroków w tym dokumencie zakłada, że używasz Beeline w sesji SSH na klastrze. Możesz również użyć lokalnego klienta beeline, ale te kroki nie zostały omówione w tym artykule.
Uruchomienie zapytania programu Hive
Ten przykład jest oparty na użyciu klienta Beeline z połączenia SSH.
Otwórz połączenie SSH z klastrem przy użyciu poniższego kodu. Zastąp
sshuser
użytkownikiem SSH dla swojego klastra i zastąpCLUSTERNAME
nazwą swojego klastra. Po wyświetleniu monitu wprowadź hasło dla konta użytkownika SSH.ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Połącz się z serwerem HiveServer2 przy użyciu klienta Beeline z poziomu otwartej sesji SSH, wprowadzając następujące polecenie:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Uwaga
Zapoznaj się z tematem "To HDInsight Enterprise Security Package (ESP) cluster using Kerberos" (Łączenie z serwerem HiveServer2 przy użyciu usługi Beeline) lub zainstaluj usługę Beeline lokalnie, aby nawiązać połączenie z lokalnego , jeśli używasz klastra z obsługą pakietu Enterprise Security (ESP)
Polecenia Beeline zaczynają się od znaku
!
, a na przykład!help
wyświetla pomoc. Jednak dla niektórych poleceń!
można pominąć. Na przykładhelp
również działa.!sql
jest używane do wykonywania instrukcji HiveQL. Jednak hiveQL jest tak często używany, że można pominąć poprzedni!sql
. Następujące dwa zdania są równoważne:!sql show tables; show tables;
W nowym klastrze jest wyświetlana tylko jedna tabela: hivesampletable.
Użyj następującego polecenia, aby wyświetlić schemat programu hivesampletable:
describe hivesampletable;
To polecenie zwraca następujące informacje:
+-----------------------+------------+----------+--+ | col_name | data_type | comment | +-----------------------+------------+----------+--+ | clientid | string | | | querytime | string | | | market | string | | | deviceplatform | string | | | devicemake | string | | | devicemodel | string | | | state | string | | | country | string | | | querydwelltime | double | | | sessionid | bigint | | | sessionpagevieworder | bigint | | +-----------------------+------------+----------+--+
Te informacje opisują kolumny w tabeli.
Wprowadź następujące instrukcje, aby utworzyć tabelę o nazwie log4jLogs przy użyciu przykładowych danych dostarczonych z klastrem usługi HDInsight: (Popraw zgodnie z potrzebami w zależności od schematu identyfikatora URI).
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 'wasbs:///example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Te stwierdzenia wykonują następujące czynności:
Wypowiedź Opis DROP TABLE (usuń tabelę) Jeśli tabela istnieje, zostanie usunięta. TWORZENIE TABELI ZEWNĘTRZNEJ Tworzy tabelę zewnętrzną w programie Hive. Tabele zewnętrzne przechowują tylko definicję tabeli w programie Hive. Dane pozostają w oryginalnej lokalizacji. FORMAT WIERSZA Sposób formatowania danych. W takim przypadku pola w każdym dzienniku są oddzielone spacją. PRZECHOWYWANA JAKO LOKALIZACJA PLIKU TEKSTOWEGO Gdzie dane są przechowywane i w jakim formacie pliku. Wybierz Wybiera liczbę wszystkich wierszy, w których kolumna t4 zawiera wartość [ERROR]. To zapytanie 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 utracie pamięci w wynikach, ta instrukcja informuje program Hive, że powinien 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 operacja MapReduce.
Usunięcie tabeli zewnętrznej nie powoduje usunięcia danych, tylko definicji tabeli.
Dane wyjściowe tego polecenia są podobne do następującego tekstu:
INFO : Tez session hasn't been created yet. Opening session INFO : INFO : Status: Running (Executing on YARN cluster with App id application_1443698635933_0001) INFO : Map 1: -/- Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0(+1)/1 Reducer 2: 0/1 INFO : Map 1: 0(+1)/1 Reducer 2: 0/1 INFO : Map 1: 1/1 Reducer 2: 0/1 INFO : Map 1: 1/1 Reducer 2: 0(+1)/1 INFO : Map 1: 1/1 Reducer 2: 1/1 +----------+--------+--+ | sev | count | +----------+--------+--+ | [ERROR] | 3 | +----------+--------+--+ 1 row selected (47.351 seconds)
Zamknij Beeline
!exit
Uruchamianie pliku HiveQL
Ten przykład jest kontynuacją z poprzedniego przykładu. Wykonaj następujące kroki, aby utworzyć plik, a następnie uruchomić go przy użyciu narzędzia Beeline.
Użyj następującego polecenia, aby utworzyć plik o nazwie query.hql:
nano query.hql
Użyj następującego tekstu jako zawartości pliku. To zapytanie tworzy nową tabelę wewnętrzną o nazwie errorLogs:
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]' AND INPUT__FILE__NAME LIKE '%.log';
Te oświadczenia wykonują następujące czynności:
Wypowiedź Opis UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE Jeśli tabela jeszcze nie istnieje, zostanie utworzona. Ponieważ słowo kluczowe EXTERNAL nie jest używane, ta instrukcja tworzy tabelę wewnętrzną. Tabele wewnętrzne są przechowywane w magazynie danych hive i są zarządzane całkowicie przez hive. PRZECHOWYWANE W FORMACIE ORC Przechowuje dane w formacie ORC (Optimized Row Columnar). Format ORC to wysoce zoptymalizowany i wydajny format do przechowywania danych hive. WSTAW ZASTĘPOWANIE... WYBRAĆ Wybiera wiersze z tabeli log4jLogs zawierającej błąd, 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 bazowych danych.
Aby zapisać plik, użyj Ctrl+X, a następnie wprowadź wartość Y, a na koniec wprowadź Enter.
Aby uruchomić plik przy użyciu narzędzia Beeline, wykonaj następujące czynności:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http' -i query.hql
Uwaga
Parametr
-i
uruchamia narzędzie Beeline i uruchamia instrukcje wquery.hql
pliku. Po zakończeniu zapytania pojawi się monitjdbc:hive2://headnodehost:10001/>
. Możesz również uruchomić plik przy użyciu parametru-f
, który kończy działanie usługi Beeline po zakończeniu zapytania.Aby sprawdzić, czy tabela errorLogs została utworzona, użyj następującej instrukcji, aby zwrócić wszystkie wiersze z tabeli errorLogs:
SELECT * from errorLogs;
Powinny zostać zwrócone trzy wiersze danych, wszystkie zawierające [ERROR] w kolumnie t4:
+---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+ | errorlogs.t1 | errorlogs.t2 | errorlogs.t3 | errorlogs.t4 | errorlogs.t5 | errorlogs.t6 | errorlogs.t7 | +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+ | 2012-02-03 | 18:35:34 | SampleClass0 | [ERROR] | incorrect | id | | | 2012-02-03 | 18:55:54 | SampleClass1 | [ERROR] | incorrect | id | | | 2012-02-03 | 19:25:27 | SampleClass4 | [ERROR] | incorrect | id | | +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+ 3 rows selected (0.813 seconds)
Następne kroki
Aby uzyskać więcej ogólnych informacji na temat programu Hive w usłudze HDInsight, zobacz Use Apache Hive with Apache Hadoop on HDInsight (Używanie programu Apache Hive z usługą Apache Hadoop w usłudze HDInsight)
Dokumentacja języka HiveQL znajduje się w podręczniku języka
Aby uzyskać więcej informacji na temat innych sposobów pracy z usługą Hadoop w usłudze HDInsight, zobacz Use MapReduce with Apache Hadoop on HDInsight (Korzystanie z usługi MapReduce z usługą Apache Hadoop w usłudze HDInsight)