Как заставить STORE (перезаписать) HDFS в Pig?

При разработке скриптов Pig, использующих команду STORE, мне приходится удалять выходной каталог для каждого запуска, иначе скрипт останавливается и предлагает:

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

Итак, я ищу для решения in-Pig для автоматического удаления каталога , а также такого, которое не задыхается, если каталог не существует во время вызова.

В справочнике Pig Latin я нашел вызывающий командный интерпретатор fs. К сожалению, скрипт Pig ломается всякий раз, когда что-то вызывает ошибку. Поэтому я не могу использовать

fs -rmr foo/bar

(т. е. удалить рекурсивно), так как он ломается, если каталог не существует. На мгновение я подумал, что могу использовать

fs -test -e foo/bar

, который является тестом и не должен ломаться, или я так думал. Однако Pig снова интерпретирует код возврата testв несуществующем каталоге как код ошибки и ломается.

Существует тикет JIRAдля проекта Pig, посвященный моей проблеме и предлагающий необязательный параметр OVERWRITEили FORCE_WRITEдля STOREкоманда. Во всяком случае, я использую Pig 0.8.1 по необходимости и такого параметра нет.

17
задан valid 19 June 2012 в 22:28
поделиться