0

我有一组数据,我在“type”列上运行了多存储命令,现在我在 hdfs 中有这些路径:“ /output/type1/ ”、“ /output/type2/ ”、“ /output/type3/ ”等等

现在,我每天在“type”列上运行一个带有 multistorage 命令的脚本,以生成“ /tmp/type1/ ”、“ /tmp/type2/ ”、“ /tmp/type3/ ”等(此处的类型可以是 < 或 =主输出中已经存在的类型)。

由于 Pig 不允许我提供已经存在的目录的输出路径,所以我每天运行的脚本是 /tmp/。有没有办法在正确的“类型”子目录下将 /tmp/ 与 /output/ 结合起来?

预计 /output/type1/ 下的 /tmp/type1/file 作为 /output/type1/file 等等。这样我可以删除 /tmp 并再次运行脚本。

任何帮助表示赞赏。提前致谢。

4

1 回答 1

0

Pig 不能处理目录,只能调用fs 命令。将临时目录映射到最终目录需要的不仅仅是 Pig 所能做的。您可以在一个小型 Java 程序中使用FileSystem Api并单独运行它或在 Oozie 工作流中运行它。

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

 %declare timestamp `date +"%s"` 
 SET mapreduce.output.basename '$timestamp'
 /* here we used the timestamp to get unicity*/
于 2016-06-02T15:36:33.113 回答