Benutzer-Werkzeuge

Webseiten-Werkzeuge


nosql:hive_erste_schritte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
nosql:hive_erste_schritte [2014/09/24 19:23] – [Indexes] gpipperrnosql:hive_erste_schritte [2014/09/24 19:49] (aktuell) gpipperr
Zeile 13: Zeile 13:
  
  
-Per HiveQL Abfragesprache werden diese MapAndReduce Jobs gesteuert/gestartet.+Per HiveQL Abfragesprache werden diese MapReduce Jobs gesteuert/gestartet.
  
 Wichtiges Grundkonzept -  **Schema-on-Write**  versus **Schema-on-Read** Wichtiges Grundkonzept -  **Schema-on-Write**  versus **Schema-on-Read**
Zeile 47: Zeile 47:
 Tabellen können partitioniert werden, Partitionen müssen aber beim Laden manuell angegeben werden Tabellen können partitioniert werden, Partitionen müssen aber beim Laden manuell angegeben werden
  
-Ein Index auf die Daten kann erstellt werden, dazu stehen drei Index Arten zur Verfügungcompact, bitmap und custom.+Ein Index auf die Daten kann erstellt werden, dazu stehen drei Index Arten zur Verfügung compact, bitmap und custom).
  
  
  
 SQL Fähigkeiten in v13: SQL Fähigkeiten in v13:
-  * Select mit inner Join und /left/right/full out Join werden unterstützt +  * Select mit inner Join und left – right full outer Join werden unterstützt 
-    * Die rechts stehende Tabelle ist die Treiber Tabelle, d.h. sollte die kleinere Tabelle im Join sein! +    * Die rechts stehende Tabelle ist die Treiber Tabelle, d.h.  das sollte auch die kleinere Tabelle im Join sein! 
-  * Subselect mit Aliaskorrelierte Subquieres+  * Subselect mit Alias und  korrelierte Subquieres
   * Nur nach Spalten in der Ergebnis Liste kann mit "Order By" sortiert werden   * Nur nach Spalten in der Ergebnis Liste kann mit "Order By" sortiert werden
      * order by wird über nur einen Reducer im Job implementiert - Performance beachten      * order by wird über nur einen Reducer im Job implementiert - Performance beachten
   * Gruppenfunktionen mit "group by" und "having" möglich   * Gruppenfunktionen mit "group by" und "having" möglich
   * Insert nur als Bulck Operation möglich   * Insert nur als Bulck Operation möglich
-  * Kein eigentliches DML auf einzel Satz Ebene +  * Kein eigentliches DML auf Einzel Satz Ebene 
   * Java User Defined Function (UDF) können/müssen vom Anwender selbst erstellt werden   * Java User Defined Function (UDF) können/müssen vom Anwender selbst erstellt werden
     * siehe hier ein Beispiel => http://blog.matthewrathbone.com/2013/08/10/guide-to-writing-hive-udfs.html     * siehe hier ein Beispiel => http://blog.matthewrathbone.com/2013/08/10/guide-to-writing-hive-udfs.html
Zeile 161: Zeile 161:
 ====Anlegen einer Tabelle mit Standard SQL==== ====Anlegen einer Tabelle mit Standard SQL====
  
-Ein Tabelle in Hive ist eine Datei auf dem HDFS.+Eine Tabelle in Hive ist eine Datei auf dem HDFS.
  
 Aber ungewohnt für Oracle DBA's, beim Anlegen der Tabelle wird definiert, wie die dazu passende Daten Datei aufgebaut sein sollte (Schema on Read Konzept). Aber ungewohnt für Oracle DBA's, beim Anlegen der Tabelle wird definiert, wie die dazu passende Daten Datei aufgebaut sein sollte (Schema on Read Konzept).
Zeile 212: Zeile 212:
  
  
-Daten direkt aus einer Datei in die Hive Table einlesen, dazu zuvor die Datei zuvor auf dem HDFS abgelegt werden:+Daten direkt aus einer Datei in die Hive Table einlesen, die zuvor auf dem HDFS abgelegt wurden:
 <code bash> <code bash>
  
Zeile 226: Zeile 226:
 </code> </code>
  
-**Hinweis** => Das original Data File wird beim Laden gelöscht! Auch wenn Fehler passieren!+**Hinweis** => Das Original Data File wird beim Laden gelöscht! Auch wenn Fehler passieren!
  
  
Zeile 304: Zeile 304:
 ==== Partitionierte Tabellen==== ==== Partitionierte Tabellen====
  
-Hive kann die Daten hinter der Tabellendefinition in eigene Dateien pro Partition aufsplitten.+Hive kann die Daten hinter der Tabellendefinition in eigene Dateien pro Partition auf splitten.
  
 Die Spalte wird dann nicht mehr in der Spaltendefinition der Tabelle angeben! Die Spalte wird dann nicht mehr in der Spaltendefinition der Tabelle angeben!
Zeile 318: Zeile 318:
 </code> </code>
  
-Laden:+===Laden===
  
 **Manuell**: **Manuell**:
Zeile 341: Zeile 341:
  
 Achtung: Letzte Spalte wird für die Partitionierung verwendet, auch wenn diese NICHTS mit der gewünschten Partitionierung zu tun hat! Achtung: Letzte Spalte wird für die Partitionierung verwendet, auch wenn diese NICHTS mit der gewünschten Partitionierung zu tun hat!
 +
 +===Abfragen===
 +
 +Im "hive.mapred.mode=strict" (default) führt eine Abfrage auf eine partitionierte Tabelle zu einem Fehler, falls keine Partition bzw. die partitionierte Spalte nicht angegeben wurde.
 +
 +<code sql>
 +
 +#Partitionen anzeigen lassen
 +
 +show partitions emp;
 +
 +
 +set hive.mapred.mode=nonstrict;
 +
 +select * from emp;
 +
 +
 +</code>
 +
  
 ====Indexes==== ====Indexes====
Zeile 379: Zeile 398:
 ==== Debugging ==== ==== Debugging ====
  
-Schlägt etwas fehlt kann im  Hive Clinet  die Logging Eigenschaften eingestellt werden:+Schlägt etwas fehlt kann im  Hive Client  die Log  Eigenschaften eingestellt werden:
  
 <code bash> <code bash>
nosql/hive_erste_schritte.txt · Zuletzt geändert: 2014/09/24 19:49 von gpipperr