【问题标题】:Pig output of Multistorage to be appended when I run it everyday当我每天运行它时要附加 Multistorage 的猪输出
【发布时间】:2016-10-02 08:57:12
【问题描述】:

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

现在, 每天我在“类型”列上运行一个带有多存储命令的脚本,以生成“/tmp/type1/”、“/tmp/type2/”、“/ tmp/type3/" 等 (此处的类型可以是

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

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

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

【问题讨论】:

  • 您如何知道要存储到哪种类型的目录?
  • 类型目录是通过在'type'列上使用multistorage命令动态创建的

标签: directory append apache-pig subdirectory multistore


【解决方案1】:

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*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2016-05-01
    • 2022-12-24
    相关资源
    最近更新 更多