STOREコマンドを使用する Pig スクリプトを開発する場合、実行ごとに出力ディレクトリを削除する必要があります。そうしないと、スクリプトが停止して次のように表示されます。
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 Reference で、シェル コマンド invoker fsを見つけました。残念ながら、何かエラーが発生すると、Pig スクリプトは壊れます。だから使えない
fs -rmr foo/bar
(つまり、再帰的に削除します)ディレクトリが存在しないと壊れるためです。一瞬使っていいのかと思った
fs -test -e foo/bar
これはテストであり、壊れてはならないか、そう思いました。test
ただし、Pigは、存在しないディレクトリでの のリターン コードを失敗コードとして再度解釈し、中断します。
私の問題に対処し、STOREコマンドのオプションのパラメーターOVERWRITEまたはFORCE_WRITEを提案する Pig プロジェクトのJIRA チケットがあります。とにかく、私は必要に迫られて Pig 0.8.1 を使用していますが、そのようなパラメーターはありません。