我每天运行时附加的Multistorage Pig输出

时间:2016-06-02 14:37:43

标签: directory append apache-pig subdirectory multistore

我有一组数据,我在列'类型'上运行多数据包命令。现在我在hdfs中有这些路径:" / output / type1 / "," / output / type2 / " ," / output / type3 / "等

现在, 我每天都会在列'类型'上运行带有multistorage命令的脚本。生成" / tmp / type1 / "," / tmp / type2 / "," 的/ tmp / TYPE3 / "等等 (这里的类型可以是<或=主输出中已存在的类型)。

由于Pig不允许我提供现有目录的输出路径,因此我每天运行的脚本是/ tmp /。 有没有办法在正确的'类型'下组合/ tmp / with / output /。子目录?

预计将/ tmp / type1 /文件放在/ output / type1 / as / output / type1 / file下 这样我可以删除/ tmp并再次运行脚本。

感谢任何帮助。 提前致谢。

1 个答案:

答案 0 :(得分:0)

Pig无法处理目录,只能调用fs commands。将临时目录映射到最终目录需要的不仅仅是Pig可以执行的操作。您可以在一个小型java程序中使用FileSystem Api并分别运行它或在Oozie工作流程中运行它。

除此之外,您需要确保附加的文件具有与现有文件不同的文件名,这不是默认行为,您可以通过此命令实现:

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