Hive INSERT Beispiele für den Befehl

Ein Hive DML-Befehl zu erkunden, ist die EINFÜGEN Befehl. Sie haben grundsätzlich drei EINFÜGEN variants- zwei von ihnen sind in der folgenden Auflistung gezeigt. Um diese neue DML-Befehl zu demonstrieren, werden Sie eine neue Tabelle erstellen, die eine Teilmenge der Daten in das halten FlightInfo2008 Tabelle.

(EIN) CREATE TABLE IF NOT myFlightInfo (Jahr SMALLINT, DontQueryMonth TINYINT, DAYOFMONTH TINYINT, DayOfWeek TINYINT, DepTime SMALLINT, ArrTime SMALLINT, UniqueCarrier STRING, FlightNum STRING, AirTime SMALLINT, ArrDelay SMALLINT, DepDelay SMALLINT VORHANDEN, Herkunft STRING, Dest STRING, Cancelled SMALLINT, CancellationCode STRING) KOMMENTAR 'Flight InfoTable'PARTITIONED BY (Monat TINYINT) ROW FORMAT DELIMITEDFIELDS TERMINATED BY', 'LINES TERMINATED BY' n '(B) STORED AS RCFILETBLPROPERTIES ( 'Schöpfer' = 'Bruce Brown', 'created_at' = 'Mo 2. September 14.24.19 EDT 2013') -(C) INSERT ÜBERSCHR TABLE myflightinfoPARTITION (Monat = 1) Jahr, Monat, DAYOFMONTH, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, AirTime, ArrDelay, DepDelay, Herkunft, Dest, Cancelled, CancellationCodeFROM FlightInfo2008 WHERE Monat = 1-(D) VON FlightInfo2008INSERT INTO TABLE myflightinfoPARTITION (Monat = 2) Jahr, Monat, DAYOFMONTH, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, AirTime, ArrDelay, DepDelay, Herkunft, Dest, Cancelled, CancellationCode WHERE Monat = 2... (Monate 3 bis 11 übersprungen Kürze halber)INSERT INTO TABLE myflightinfoPARTITION (Monat = 12) Jahr, Monat, DAYOFMONTH, DayOfWeek, DepTime, ArrTime, UniqueCarrier, FlightNum, AirTime, ArrDelay, DepDelay, Herkunft, Dest, Cancelled, CancellationCode WHERE Monat = 12-(E) hive (Flugdaten)> SHOW PARTITIONEN myflightinfo-OKmonth = 1 Monat = 10 Monate = 11 Monate = 12 ... Monat = 9(F) $ Ls /home/biadmin/Hive/warehouse/flightdata.db/myflightinfomonth=1 Monat = 11 Monate = 2 Monate = 4 Monate = 6 Monate = 8 Monate = 10 Monate = 12 Monate = 3 Monate = 5 Monate = 7 Monate = 9(G) $ HIVE_HOME / bin / hive --service rcfilecat / home / BiAdmin / Hive / Lager / flightdata.db / myflightinfo / Monat = 12 / 000000_0 ... 200.812 13 6 655 856 DL 163.885 0 -5 PBI ATL 0200812 13 6 12511446DL 163989 9 11 IAD ATL 0200812 13 6 11101413DL 1.641.104 -5 7 SAT ATL 0

In Schritt (A), erstellen Sie diese neue Tabelle und angeben, dass das Dateiformat säulen Zeile wird (Schritt (B)) anstelle von Text. Dieses Format ist kompakter als Text und führt oft besser, auf Ihrem Zugriffsmuster abhängig. (Wenn Sie eine kleine Teilmenge der Spalten anstelle von ganzen Zeilen wird, sollten rcfile Format.)

Der Standard SerDe für rcfile Format ist das ColumnarSerDe. Sie können diese Tatsache überprüfen, indem die Lauf DESCRIBE EXTENDED myFlightInfo HiveQL Befehl von der Befehlszeilenschnittstelle.

Nach dem Erstellen der Tabelle, verwenden Sie die INSERT ÜBERSCHR Befehl [siehe Schritt (C)] Daten über ein einfügen WÄHLEN Erklärung der FlightInfo2008 Tabelle. Beachten Sie, dass Sie Ihre Daten sind Partitionierung mit der PARTITION Keyword basierend auf dem Monat Feld.

Nachdem Sie fertig sind, werden Sie 12 Tabellenpartitionen haben oder tatsächliche Verzeichnisse, unter der Warenhaus Verzeichnis im Dateisystem auf der virtuellen Maschine, auf die 12 Monate des Jahres entspricht. Partitioning können dramatisch Ihre Abfrageleistung verbessern, wenn Sie Daten in die abfragen myFlightInfo Tabelle nur für einen bestimmten Monat.

Sie können die Ergebnisse der SOE PARTITION Ansatz mit der SHOW PARTITIONEN Befehl in den Schritten (E) und (F). Beachten Sie in Schritt (D), die Sie verwenden eine Variante des EINFÜGEN Befehl zu einer Zeit Daten in mehrere Partitionen einzufügen. Nur Monat 2 und 12 sind aus Gründen der Kürze aber Monate 3 bis 11 die gleiche Syntax hätte gezeigt.

Partitionen sind sehr nützlich, um die Hive-Programmierer. Allerdings ist es nicht ungewöhnlich, dass ein Datensatz zu begegnen, wo Partitionierung unhandlich werden könnte, vor allem, wenn mehrere Partitionen angegeben werden [PARTITION BY (Land STRING, STRING Personname), beispielsweise]. Zwölf Partitionen sind eine Sache - 7 Milliarden Partitionen wäre eine ganz andere!

Die Lösung Partition Zersiedelung ist Bucketing. Bucketing in Hive funktioniert, indem Sie eine angemessene Anzahl von Eimer zu spezifizieren, und dann versucht das System gleichmäßig um die Daten in die Anzahl der Schaufeln Sie angeben, zu verteilen. [Das könnte wie folgt aussehen etwas PARTITION BY (...) BY (BucketingColumn) IN x BUCKETS CLUSTERED.]

Darüber hinaus ermöglicht diese Funktion Tabelle Probenahme - anstelle der gesamten Tabelle eine Technik, die Hive Benutzer ermöglicht Abfragen auf einer Stichprobe der Daten zu schreiben. HiveQL Tabelle Probenahme kann für große Datenanalyse sehr nützlich sein.

Sie können dies auch nutzen FROM table1 INSERT INTO table2 SELECT ... Format zum Einfügen in mehrere Tabellen zu einem Zeitpunkt. Sie nutzen EINFÜGEN Anstatt von ÜBERSCHREIBEN hier zeigen die Möglichkeit des Einsetzens, anstatt zu überschreiben. Bienenstock erlaubt nur anhängt, nicht-Einsätze, in Tabellen, so dass die EINFÜGEN Schlüsselwort instruiert einfach Hive die Daten an die Tabelle anzufügen.

Schließlich ist zu beachten in Schritt (G), die Sie haben zu verwenden, um einen speziellen Hive Befehl Dienst (rcfilecat) Diese Tabelle in Ihrem Lager zu sehen, weil die rcfile Format ist ein binäres Format, im Gegensatz zu dem vorherigen TEXTDATEI Format Beispiele.

Das EINFÜGEN DML-Befehl hat drei Varianten. Die dritte Variante ist die dynamische Trenneinsätze Variante. In der Auflistung, partitionieren Sie das myFlightInfo Tabelle in 12 Segmente, 1 pro Monat. Wenn Sie Hunderte von Partitionen, so wäre diese Aufgabe ziemlich schwierig geworden, und es wäre erforderlich Scripting haben, um den Job zu erledigen.

Stattdessen unterstützt Hive eine Technik zum dynamischen Partitionen mit der Erstellung INSERT ÜBERSCHR Erklärung. Also, wenn Sie sich selbst zu finden, um die Tabellenpartitionierung mit einem großen und möglicherweise Variable, die Anzahl der Partitionen zu nutzen, überprüfen Sie die dynamische Trenneinsätze verfügen im Hive DML Sprache Handbuch.

Menü