Ich wollte eine externe Tabelle erstellen und Daten über Schwein Skript laden. Ich folgte dem folgenden Ansatz:Schreiben von Daten mit PIG zu HIVE externe Tabelle
Ok. Erstellen Sie eine externe Hive-Tabelle mit einem Schemalayout irgendwo im HDFS-Verzeichnis. Sagen wir
create external table emp_records(id int,
name String,
city String)
row formatted delimited
fields terminated by '|'
location '/user/cloudera/outputfiles/usecase1';
Erstellen Sie einfach eine Tabelle wie oben und keine Notwendigkeit, eine Datei in dieses Verzeichnis zu laden.
Jetzt ein Schwein Skript schreiben, das wir Daten für einiges Eingabeverzeichnis lesen und dann, wenn Sie die Ausgabe dieses Schwein Skript Verwendung speichern, wie unten
A = LOAD 'inputfile.txt' USING PigStorage(',') AS(id:int,name:chararray,city:chararray);
B = FILTER A by id > = 678933;
C = FOREACH B GENERATE id,name,city;
STORE C INTO '/user/cloudera/outputfiles/usecase1' USING PigStorage('|');
Stellen Sie sicher, dass die Zielposition und Trennzeichen und das Schema Layout final FOREACH Anweisung in dir passt Pigscript mit Hive DDL-Schema.
Mein Problem ist, wenn ich zum ersten Mal die Tabelle erstellt, es ein Verzeichnis in hdfs schafft, und wenn ich eine Datei mit Skript zu speichern versucht, wirft es eine Fehlermeldung, „Ordner bereits vorhanden ist“. Es sieht so aus, als ob pig store immer in ein neues Verzeichnis mit nur spezifischem Namen schreibt.
Gibt es eine Möglichkeit, dieses Problem zu vermeiden?
Und gibt es noch andere Attribute, die wir mit STORE-Befehl in PIG verwenden können, um jedes Mal auf eine bestimmte Verzeichnis/Datei zu schreiben?
Dank Ram