每天运行时要追加的多存储的pig输出

fdx2calv  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(380)

我有一组数据,在其上对“type”列运行multistorage命令,现在在hdfs中有了这些路径:“/output/type1/”、“/output/type2/”、“/output/type3/”等。
现在,我每天都在“type”列上运行一个带有multistorage命令的脚本,生成“/tmp/type1/”、“/tmp/type2/”、“/tmp/type3/”等(这里的类型可以是<或=主输出中已经存在的类型)。
因为pig不允许我提供已经存在的目录的输出路径,所以我每天运行的脚本是/tmp/。有没有办法将/tmp/与/output/组合在右侧的“type”子目录下?
在/output/type1/as/output/type1/file下应该有/tmp/type1/file等等。这样我可以删除/tmp并再次运行脚本。
感谢您的帮助。提前谢谢。

hujrc8aj

hujrc8aj1#

pig不能处理目录,但调用fs命令。将临时目录Map到最终目录需要的不仅仅是pig所能做的。您可以在一个小型java程序中使用文件系统api,并单独运行它或在oozie工作流中运行它。
除此之外,您还需要确保附加的文件与现有文件具有不同的文件名,这不是默认行为,您可以通过以下命令实现:

%declare timestamp `date +"%s"` 
 SET mapreduce.output.basename '$timestamp'
 /* here we used the timestamp to get unicity*/

相关问题