hiveAan de slag met Hive


Opmerkingen

  • Hive is een datawarehouse-tool gebouwd bovenop Hadoop .
  • Het biedt een SQL-achtige taal om gegevens op te vragen.
  • We kunnen bijna alle SQL-query's in Hive uitvoeren, het enige verschil is dat het een taak voor het verminderen van kaarten in de backend uitvoert om het resultaat van Hadoop Cluster op te halen. Hierdoor neemt Hive soms meer tijd om de resultaatset op te halen.

Bijenkorfinstallatie met externe metastore in Linux

Vereisten:

  1. Java 7
  2. Hadoop (raadpleeg hier voor Hadoop-installatie)
  3. MySQL-server en -client

Installatie:

Stap 1: Download de nieuwste Hive tarball van de downloadpagina .

Stap 2: Pak de gedownloade tarball uit ( Veronderstelling: de tarball wordt gedownload in $ HOME )

tar -xvf /home/username/apache-hive-x.y.z-bin.tar.gz
 

Stap 3: werk het omgevingsbestand bij ( ~/.bashrc )

export HIVE_HOME=/home/username/apache-hive-x.y.z-bin
export PATH=$HIVE_HOME/bin:$PATH
 

bron het bestand om de nieuwe omgevingsvariabelen in te stellen.

source ~/.bashrc
 

Stap 4: Download de JDBC-connector voor mysql van hier en pak het.

tar -xvf mysql-connector-java-a.b.c.tar.gz
 

De uitgepakte map bevat het connector jar-bestand mysql-connector-java-abcjar . Kopiëren naar het lib van $HIVE_HOME

cp mysql-connector-java-a.b.c.jar $HIVE_HOME/lib/
 

Configuratie:

Maak het hive-configuratiebestand hive-site.xml onder $HIVE_HOME/conf/ directory en voeg de volgende metastore-gerelateerde eigenschappen toe.

<configuration>
   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost/hive_meta</value>
      <description>JDBC connect string for a JDBC metastore</description>
   </property> 
   
   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>    
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
   </property> 
   
   <property>
       <name>javax.jdo.option.ConnectionUserName</name> 
       <value>mysqluser</value>
       <description>username to use against metastore database</description>
   </property> 
   
   <property>
       <name>javax.jdo.option.ConnectionPassword</name> 
       <value>mysqlpass</value>
       <description>password to use against metastore database</description>
   </property> 

   <property>
       <name>datanucleus.autoCreateSchema</name>
       <value>false</value> 
   </property> 

   <property>
       <name>datanucleus.fixedDatastore</name>
       <value>true</value>
   </property>
</configuration>
 

Werk de waarden van MySQL "gebruikersnaam" en "wachtwoord" dienovereenkomstig bij in de eigenschappen.

Maak het Metastore-schema:

De metastore-schemascripts zijn beschikbaar onder $HIVE_HOME/scripts/metastore/upgrade/mysql/

Log in op MySQL en bron het schema,

mysql -u username -ppassword

mysql> create database hive_meta;
mysql> use hive_meta;
mysql> source hive-schema-x.y.z.mysql.sql;
mysql> exit;
 

Metastore starten:

hive --service metastore
 

Om het op de achtergrond uit te voeren,

nohup hive --service metastore &
 

HiveServer2 starten: (gebruik indien nodig)

hiveserver2
 

Om het op de achtergrond uit te voeren,

nohup hiveserver2 metastore &
 

Opmerking: deze uitvoerbare bestanden zijn beschikbaar onder $HIVE_HOME/bin/

Aansluiten:

Gebruik hive , beeline of Hue om verbinding te maken met Hive.

Hive CLI is verouderd, het gebruik van Beeline of Hue wordt aanbevolen.

Aanvullende configuraties voor Hue:

Werk deze waarde bij in $HUE_HOME/desktop/conf/hue.ini

[beeswax] 
    hive_conf_dir=/home/username/apache-hive-x.y.z-bin/conf
 

Installatie van Hive (linux)

Begin met het downloaden van de nieuwste stabiele release van https://hive.apache.org/downloads.html

-> Pak het bestand nu uit met

$ tar -xvf hive-2.xy-bin.tar.gz

-> Maak een map in de / usr / local / met

$ sudo mkdir / usr / local / hive

-> Verplaats het bestand naar root met

$ mv ~ / Downloads / hive-2.xy / usr / local / hive

-> Bewerk omgevingsvariabelen voor hadoop en component in .bashrc

$ gedit ~ / .bashrc

soortgelijk

export HIVE_HOME = / usr / local / hive / apache-hive-2.0.1-bin /

export PATH = $ PATH: $ HIVE_HOME / bin

export CLASSPATH = $ CLASSPATH: / usr / local / Hadoop / lib / * :.

export CLASSPATH = $ CLASSPATH: /usr/local/hive/apache-hive-2.0.1-bin/lib/* :.

-> Start nu Hadoop als deze nog niet actief is. En zorg ervoor dat het actief is en niet in de veilige modus staat.

$ hadoop fs -mkdir / user / hive / warehouse

De map "magazijn" is de locatie voor het opslaan van de tabel of gegevens met betrekking tot component.

$ hadoop fs -mkdir / tmp

De tijdelijke map 'tmp' is de tijdelijke locatie om het tussenliggende verwerkingsresultaat op te slaan.

-> Stel machtigingen in voor lezen / schrijven in die mappen.

$ hadoop fs -chmod g + w / user / hive / warehouse

$ hadoop fs -chmod g + w / user / tmp

-> Start HIVE nu met dit commando in console

$ bijenkorf

Voorbeeld van Word Count in Hive

Documentenbestand (invoerbestand)

Mary had een kleine lam

zijn vacht was wit als sneeuw

en overal waar Maria ging

het lam was zeker te gaan.

Bijenkorfvraag

CREATE TABLE FILES (line STRING);

LOAD DATA INPATH 'docs' OVERWRITE INTO TABLE FILES;

CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
(SELECT explode(split(line, ' ')) AS word FROM FILES) w
GROUP BY word
ORDER BY word;
 

Uitvoer van de tabel word_counts in Hive

Mary, 2

had, 1

a, 1

kleine, 1

lam, 2

zijn, 1

fleece, 1

was 2

wit, 1

zoals 1

sneeuw, 1

en 1

overal, 1

dat 1

ging, 1

de 1

zeker, 1

tot 1

go, 1