Apache pig 脚本删除文件夹(如果存在)

Apache pig script delete a folder if exists

我想通过apache pig脚本删除上次执行的输出文件夹。这个命令工作正常。

sh [ -e  /home/LocalPig/test ] && rm -rf /home/LocalPig/test

但是如果我写

sh OutpuFile=/home/LocalPig/test
sh [ -e OutputFile] && rm -rf OutputFile 

我收到有关 OutputFile 的错误!

ERROR 2997: Encountered IOException. org.apache.pig.tools.parameters.ParameterSubstitutionException: Undefined parameter : OutputFile

有人知道吗?

谢谢

参考:Parameter Substituion

%declare OutputFile '/home/LocalPig/test'
sh [ -e '$OutputFile' ] && rm -rf '$OutputFile'

希望这能解决问题。它只是 .pig 脚本文件中的以下命令。您不必编写任何 shell 命令。它可以使用内置的 fs 命令在 pig 环境中完成。

例如,像下面这样在你的pig脚本中添加一条语句,它也不会因为文件夹不存在而出错。如果存在或优雅地存在该语句,它将删除。

fs -rm -f -r -R /user/horton/denver_total;

当然,您也可以在 pig 之外做很多工作,但是在控制数据创建的脚本中执行任何删除操作非常有用。跟踪创建和销毁该文件的谱系让生活变得更简单。