2016-04-08 7 views
0

eingefügt, was passiert, wenn create table X (...) clustered by(date) sorted by (time) Hive Tabelle sortiert, aber ohne Art

aber eingeführt, ohne Art insert into x select * from raw

Will Daten, nachdem sie von rohen vor eingefügt geholt sortiert werden?

Wenn unsortierte Daten eingefügt werden Was tut "sortierte von" in create table-Anweisung. Es funktioniert nur Hinweis für später ausgewählte Abfragen?

Antwort

2

Die documentation erklärt:

Die CLUSTERED BY und SORTED BY Schöpfung Befehle beeinflussen nicht, wie Daten in eine Tabelle eingefügt wird - nur, wie es gelesen wird. Das bedeutet, dass Benutzer vorsichtig sein müssen, um Daten korrekt einzufügen, indem die Anzahl der Reduzierungen gleich der Anzahl der Buckets und CLUSTER BY und SORT BY Befehle in ihrer Abfrage angeben.

Ich denke, es ist klar, dass Sie die Daten sortiert einfügen möchten, wenn Sie diese Option verwenden.

+0

Dank Gordon. Ich habe dieses Dokument schon gesehen. –

+0

Mein Wunder ist dann warum geclusterte, sortierte Klausel in DDL erstellen? –

1

Nein, die Daten werden nicht sortiert.

Wie eine andere Antwort erklärt, ändern die Optionen SORTED BY und CLUSTERED BY nicht, wie Daten von Abfragen zurückgegeben werden. Obwohl die Dokumentation technisch korrekt ist, besteht der Zweck von CLUSTER BY darin, zugrunde liegende Daten so in HDFS zu schreiben, dass nachfolgende Abfragen in einigen Fällen schneller werden. Clustering (Bucketing) ähnelt der Partitionierung, da der Abfrageprozessor das Lesen von Zeilen überspringen kann. Wenn der Cluster sinnvoll ausgewählt wird. Eine häufige Verwendung von Buckets sind Sampling-Daten, bei denen Sie explizit nur bestimmte Buckets einschließen und dadurch Lesevorgänge gegenüber Ausgeschlossenen vermeiden.

+0

danke @ Tom Harrison Jr. dann was wird die beste einfügen Abfrage für die schnelle Auswahl Zeit wenn Tabelle von "create table aaa ... Clustered von (x, y) in 256 Eimer" erstellt. ist "einfügen überschreiben aaa wählen * aus bbb verteilen durch (x, y)" ok? –

+0

Es hängt vollständig von Ihren Daten und von Ihren Bedürfnissen ab. Das ist in Ihrem Beispiel nicht klar, aber das Erstellen eines Tabellenschemas ist trivial - die Arbeit hängt weitgehend davon ab, wie viele Daten Sie schreiben und welche Abfragen Sie ausführen. Sie müssen verschiedene Optionen ausprobieren und die Schreibleistung, die Lese-/Abfrageleistung, vergleichen. Es gibt buchstäblich Hunderte von Faktoren, die das Ergebnis beeinflussen können. –

Verwandte Themen