2016-05-30 10 views
0

Momentan fallen wir die Tabelle täglich und führen das Skript, das die Daten in die Tabellen lädt. Script dauert 3-4 Stunden, während denen keine Daten verfügbar sind. Unser Ziel ist es nun, die alten Hive-Daten den Analysten zur Verfügung zu stellen, bis die Ausführung der neuen Daten geladen ist.Drop-Hive-Tabelle Partition durch Schwein Skript

Ich erreiche diese Sache im hql-Skript, indem ich tägliche Daten in die auf load_year, load_month und load_day partitionierten Hive-Tabellen lade und die gestrigen Daten durch Löschen der Partition lösche. Aber was ist die Option für Schwein Skript, um das gleiche zu erreichen? Können wir den Tisch durch Schweineschrift verändern? Ich möchte die andere hql nicht ausführen, um eine Partition nach dem anderen zu löschen. Danke

+0

Schwein wird für den Datenfluss verwendet ... also, während für die Prozess pic richtigen Daten sammeln Daten ... –

+0

Es tut mir leid. Ich habe dich nicht verstanden. Meine Frage bezieht sich nicht auf das Abholen von Daten, sondern bezieht sich auf das Speichern der Daten im Schwein und nach dem Speichern des Ablegens der alten Daten durch das Schwein. – Renu

Antwort

0

Seit HDP 2.3 können Sie HCatalog-Befehle in Pig-Skripten verwenden. Daher können Sie mit dem Befehl HCatalog eine Hive-Tabellenpartition löschen. Das folgende Beispiel zeigt das Löschen einer Hive-Partition:

-- Set the correct hcat path 
set hcat.bin /usr/bin/hcat; 
-- Drop a table partion or execute other any Hcatalog command 
sql ALTER TABLE midb1.mitable1 DROP IF EXISTS PARTITION(activity_id = "VENTA_ALIMENTACION",transaction_month = 1); 

Eine andere Möglichkeit ist die Ausführung von SH-Befehlen in Pig Script. Allerdings hatte ich einige Probleme, um Sonderzeichen in ALTER-Befehlen zu umgehen. Also, die erste ist meiner Meinung nach die beste Option.

Grüße, Roberto Tardío