有一种方法来控制的Hadoop流作业的输出文件名? 具体来说,我想我的作业的输出文件的内容和名称由KET减速机输出组织 - 每个文件将只包含一个键值,它的名字将是关键

更新: 刚刚找到了答案 - 如果使用从MultipleOutputFormat派生的作业输出格式允许输出文件名的控制的Java类。 HTTP://hadoop.apache .ORG /型芯/文档/电流/ API /组织/阿帕奇/ hadoop的/ mapred / LIB / MultipleOutputFormat.html

我还没有看到这方面的任何样本有... 任何人都可以点出了Hadoop的流样本,使得使用自定义输出格式的Java类的?

有帮助吗?

解决方案

使用从MultipleOutputFormat导出作为作业输出格式允许输出文件名的控制的Java类。 HTTP://hadoop.apache .ORG /型芯/文档/电流/ API /组织/阿帕奇/ hadoop的/ mapred / LIB / MultipleOutputFormat.html

在使用Hadoop流,因为只有一个JAR支持你确实有叉流罐子,把你的新的输出格式班在它流作业能够引用它...

<强> 编辑: 由于的Hadoop 0.20.2版本的类已被弃用,您现在应该使用: 的http:// Hadoop的.apache.org /文档/ MapReduce的/当前/ API /组织/阿帕奇/ hadoop的/映射精简/ LIB /输出/ MultipleOutputs.html

其他提示

在一般情况下,Hadoop的希望你考虑整个目录设置为输出,而不是一个单独的文件。有没有办法直接控制的文件名,无论是使用流还是普通的Java工作。

但是,没有从这样拆分和重新命名自己阻止你,作业完成后。您可以$ HADOOP DFS -cat路径/到/你/输出/目录/兼职*和管道,为你的脚本,通过按键分割内容,并将其写入新文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top