Wie erzwinge ich das Speichern (Überschreiben) von HDFS in Pig?
Bei der Entwicklung von Pig-Skripten, die dasGESCHÄFT Befehl Ich muss das Ausgabeverzeichnis für jeden Lauf löschen oder das Skript stoppt und bietet:
2012-06-19 19:22:49,680 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 6000: Output Location Validation Failed for: 'hdfs://[server]/user/[user]/foo/bar More info to follow:
Output directory hdfs://[server]/user/[user]/foo/bar already exists
Also bin ichSuche nach einer In-Pig-Lösung, um das Verzeichnis automatisch zu entfernen, auch eine, die nicht drosselt, wenn das Verzeichnis zum Zeitpunkt des Aufrufs nicht vorhanden ist.
In der Pig Latin Reference habe ich den Shell-Befehl invoker gefundenfs. Leider bricht das Pig-Skript immer dann ab, wenn irgendetwas einen Fehler erzeugt. Also kann ich nicht verwenden
fs -rmr foo/bar
(d. h. rekursiv entfernen), da es kaputt geht, wenn das Verzeichnis nicht existiert. Für einen Moment dachte ich, ich könnte es benutzen
fs -test -e foo/bar
das ist ein test und sollte nicht kaputt gehen oder so dachte ich. Pig interpretiert jedoch erneuttest
's Rückkehrcode in einem nicht vorhandenen Verzeichnis als Fehlercode und bricht ab.
Da ist einJIRA-Ticket für das Pig-Projekt, das sich mit meinem Problem befasst und einen optionalen Parameter vorschlägtÜBERSCHREIBEN oderFORCE_WRITE für dieGESCHÄFT Befehl. Wie auch immer, ich benutze Pig 0.8.1 aus Notwendigkeit und es gibt keinen solchen Parameter.