Como forçar STORE (substituir) para HDFS no Pig?
Ao desenvolver scripts Pig que usam oLOJA comando eu tenho que excluir o diretório de saída para cada execução ou o script pára e oferece:
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
Então eu estouprocurando por uma solução in-Pig para remover automaticamente o diretório, também aquele que não engasga se o diretório é inexistente na hora da chamada.
No Pig Latin Reference eu encontrei o comando shell invokerfs. Infelizmente, o script Pig quebra sempre que algo produz um erro. Então não posso usar
fs -rmr foo/bar
(ou seja, remover recursivamente), uma vez que se rompe se o diretório não existe. Por um momento eu pensei que eu poderia usar
fs -test -e foo/bar
que é um teste e não deve quebrar, então eu pensei. No entanto, Pig interpreta novamentetest
o código de retorno em um diretório não existente como um código de falha e quebras.
Existe umBilhete JIRA para o projeto Pig abordando meu problema e sugerindo um parâmetro opcionalOVERWRITE ouFORCE_WRITE para oLOJA comando. De qualquer forma, estou usando o Pig 0.8.1 por necessidade e não existe esse parâmetro.