Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In dit artikel wordt beschreven hoe u de Apache Beeline-opdrachtregelclient gebruikt om Apache Hive-query's te maken en uit te voeren via een SSH-verbinding.
Achtergrond
Beeline is een Hive-client die is opgenomen op de hoofdknooppunten van uw HDInsight-cluster. In dit artikel wordt beschreven hoe u dit hulpprogramma gebruikt via voorbeelden met behulp van een Hive-query en een HiveQL-bestand.
Als u verbinding wilt maken met de Beeline-client die is geïnstalleerd op uw HDInsight-cluster of Beeline lokaal wilt installeren, volgt u onze handleiding om verbinding te maken met Of Apache Beeline te installeren.
Beeline maakt gebruik van JDBC om verbinding te maken met HiveServer2, een service die wordt gehost op uw HDInsight-cluster. U kunt Beeline ook gebruiken voor toegang tot Hive op HDInsight op afstand via internet. De volgende voorbeelden bevatten de meest voorkomende verbindingsreeksen die worden gebruikt om vanuit Beeline verbinding te maken met HDInsight.
Vereisten voor voorbeelden
Een Hadoop-cluster in Azure HDInsight. Als u een cluster nodig hebt, volgt u onze handleiding om een HDInsight-cluster te maken.
Let op het URI-schema voor de primaire opslag van uw cluster. Bijvoorbeeld
wasb://voor Azure Storage,abfs://voor Azure Data Lake Storage Gen2 ofadl://voor Azure Data Lake Storage Gen1. Als beveiligde overdracht is ingeschakeld voor Azure Storage, is de URIwasbs://. Zie veilige overdracht voor meer informatie.Een SSH-client. Zie voor meer informatie Verbinding maken met HDInsight (Apache Hadoop) via SSH. In de meeste stappen in dit document wordt ervan uitgegaan dat u Beeline van een SSH-sessie naar het cluster gebruikt. U kunt ook een lokale Beeline-client gebruiken, maar deze stappen worden niet behandeld in dit artikel.
Een Hive-query uitvoeren
Dit voorbeeld is gebaseerd op het gebruik van de Beeline-client vanuit een SSH-verbinding.
Open een SSH-verbinding met het cluster met de onderstaande code. Vervang
sshuserdoor de SSH-gebruiker voor uw cluster en vervangCLUSTERNAMEdoor de naam van uw cluster. Voer het wachtwoord voor het SSH-gebruikersaccount in wanneer u hierom wordt gevraagd.ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.netMaak verbinding met HiveServer2 met uw Beeline-client vanuit uw geopende SSH-sessie door de volgende opdracht in te voeren:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'Opmerking
Raadpleeg het gedeelte 'To HDInsight Enterprise Security Package (ESP) cluster met behulp van Kerberos' in Connect to HiveServer2 using Beeline of installeer Beeline lokaal om vanaf uw lokale omgeving verbinding te maken als u een cluster gebruikt dat is ingeschakeld met het Enterprise Security Package (ESP).
Beeline-opdrachten beginnen met een
!teken, bijvoorbeeld!helpgeeft help weer.!kan echter worden weggelaten voor sommige opdrachten. Werkt bijvoorbeeldhelpook.Er is
!sql, dat wordt gebruikt om HiveQL-instructies uit te voeren. HiveQL wordt echter zo vaak gebruikt dat u het voorgaande!sqlweglaat. De volgende twee instructies zijn equivalent:!sql show tables; show tables;In een nieuw cluster wordt slechts één tabel weergegeven: hivesampletable.
Gebruik de volgende opdracht om het schema voor hivesampletable weer te geven:
describe hivesampletable;Met deze opdracht wordt de volgende informatie geretourneerd:
+-----------------------+------------+----------+--+ | 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 | | +-----------------------+------------+----------+--+In deze informatie worden de kolommen in de tabel beschreven.
Voer de volgende instructies in om een tabel met de naam log4jLogs te maken met behulp van voorbeeldgegevens van het HDInsight-cluster: (Wijzig indien nodig op basis van uw URI-schema.)
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;Met deze verklaringen wordt het volgende uitgevoerd:
Verklaring Beschrijving DROP TABLE Als de tabel bestaat, wordt deze verwijderd. AANMAKEN EXTERNE TABEL Hiermee maakt u een externe tabel in Hive. Externe tabellen slaan alleen de tabeldefinitie op in Hive. De gegevens blijven op de oorspronkelijke locatie achter. Rijformaat De indeling van de gegevens. In dit geval worden de velden in elk logboek gescheiden door een spatie. LOCATIE VAN OPGESLAGEN ALS TEKSTBESTAND Waar de gegevens worden opgeslagen en in welke bestandsindeling. SELECTEREN Hiermee selecteert u het aantal rijen waarin kolom t4 de waarde [FOUT] bevat. Deze query retourneert een waarde van 3 omdat er drie rijen zijn die deze waarde bevatten. INPUT__FILE__NAME LIKE '%.log' Hive probeert het schema toe te passen op alle bestanden in de map. In dit geval bevat de map bestanden die niet overeenkomen met het schema. Om garbagedata in de resultaten te voorkomen, vertelt deze instructie Hive dat het alleen gegevens moet retourneren uit bestanden die eindigen op .log. Opmerking
Externe tabellen moeten worden gebruikt wanneer u verwacht dat de onderliggende gegevens worden bijgewerkt door een externe bron. Bijvoorbeeld een geautomatiseerd proces voor het uploaden van gegevens of een MapReduce-bewerking.
Als u een externe tabel verwijdert, worden de gegevens niet verwijderd, alleen de tabeldefinitie.
De uitvoer van deze opdracht is vergelijkbaar met de volgende tekst:
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)Beeline afsluiten:
!exit
Een HiveQL-bestand uitvoeren
Dit voorbeeld is een vervolg van het vorige voorbeeld. Gebruik de volgende stappen om een bestand te maken en voer het vervolgens uit met Beeline.
Gebruik de volgende opdracht om een bestand met de naam query.hql te maken:
nano query.hqlGebruik de volgende tekst als de inhoud van het bestand. Met deze query maakt u een nieuwe 'interne' tabel met de naam 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';Met deze uitspraken worden de volgende acties uitgevoerd:
Verklaring Beschrijving TABEL MAKEN ALS DEZE NIET BESTAAT Als de tabel nog niet bestaat, wordt deze gemaakt. Omdat het sleutelwoord EXTERNAL niet wordt gebruikt, wordt met deze instructie een interne tabel gemaakt. Interne tabellen worden opgeslagen in het Hive-datawarehouse en worden volledig beheerd door Hive. OPGESLAGEN ALS ORC Slaat de gegevens op in de ORC-indeling (Optimized Row Columnar). ORC-indeling is een zeer geoptimaliseerde en efficiënte indeling voor het opslaan van Hive-gegevens. INSERT OVERWRITE ... SELECTEREN Selecteert rijen uit de tabel log4jLogs die [ERROR] bevatten en voegt vervolgens de gegevens in de tabel errorLogs in. Opmerking
In tegenstelling tot externe tabellen worden de onderliggende gegevens ook verwijderd door een interne tabel te verwijderen.
Als u het bestand wilt opslaan, gebruikt u Ctrl+X, voert u Y in en voert u ten slotte Enter in.
Gebruik het volgende om het bestand uit te voeren met Beeline:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http' -i query.hqlOpmerking
De
-iparameter start Beeline en voert de instructies in hetquery.hqlbestand uit. Zodra de query is voltooid, komt u bij dejdbc:hive2://headnodehost:10001/>prompt. U kunt ook een bestand uitvoeren met behulp van de-fparameter, waarmee Beeline wordt afgesloten nadat de query is voltooid.Als u wilt controleren of de tabel errorLogs is gemaakt, gebruikt u de volgende instructie om alle rijen uit errorLogs te retourneren:
SELECT * from errorLogs;Er moeten drie rijen met gegevens worden geretourneerd, allemaal met [FOUT] in kolom 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)
Volgende stappen
Zie Apache Hive gebruiken met Apache Hadoop in HDInsight voor meer algemene informatie over Hive in HDInsight
U vindt de HiveQL-taalreferentie in de taalhandleiding
Zie MapReduce gebruiken met Apache Hadoop in HDInsight voor meer informatie over andere manieren waarop u met Hadoop in HDInsight kunt werken