Wie funktioniert Hive-Sie entscheiden, Wann Karte reduzieren und Wann nicht?
Als einfaches Beispiel,
select * from tablename;
NICHT kickt in der Karte reduzieren, während
select count(*) from tablename;
TUT. Was ist das Allgemeine Prinzip verwendet, um zu entscheiden, Wann Karte reduzieren (von hive)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Allgemeinen, jede Art von aggregation, wie beispielsweise min/max/count ist zu verlangen, dass ein MapReduce-job. Dies ist nicht zu erklären, alles für Sie, wahrscheinlich.
Hive, im Stil von vielen RDBMS, hat eine
ERKLÄREN
Schlüsselwort, skizzieren, wie Sie Ihre Hive-Abfrage übersetzt wird, in MapReduce-jobs. Versuchen Sie, erklären Sie auf Ihren beiden Beispiel-Abfragen und sehen, was es versucht zu tun hinter den kulissen.Wann immer wir feuern eine Abfrage wie select * from tablename, Hive liest die Datei und holt sich die gesamten Daten-ohne jegliche aggregation(min/max/count etc.). Es nenne, eine FetchTask eher als eine mapreduce Aufgabe.
Dies ist auch eine Optimierung der Technik in den Bienenstock. hive.Holen.Aufgabe.Konvertierung Eigenschaft kann (d.h. die FETCH-Aufgabe) minimieren die Latenz der Karte-overhead reduziert.
Dies ist, wie wir Lesen, eine hadoop-Datei : hadoop fs -Katze mit dem Namen
Aber wenn wir wählen Sie colNames from tablename, Bedarf es eines map-reduce-job, wie es braucht, um zu extrahieren die 'Säule' aus jeder Zeile durch analysieren der aus der Datei geladen.
select column from tablename
laufen nicht ein HERR mitminimal
odermore
Einstellung derhive.fetch.task.conversion
Nur liest die Rohdaten von Dateien in HDFS, so ist es viel schneller, ohne MapReduce.
Es ist eine Optimierung Technik
hive.fetch.task.conversion
Eigenschaft kann (FETCH) task minimieren der Wartezeit von mapreduce-overhead.Beim ausführen von SELECT -, LIMIT -, FETCH-Abfragen dieser Eigenschaft überspringt mapreduce und verwendet den FETCH-Aufgabe.
Diese Eigenschaft kann 3 Werte -
none
,minimal
(der Standard) undmore
.