【问题标题】:Hadoop: How to output different format types in the same job? (part II)Hadoop:如何在同一个作业中输出不同的格式类型? (第二部分)
【发布时间】:2015-11-23 23:58:54
【问题描述】:

我想使用 MultipleOutputs 在同一个减速器中编写压缩和未压缩的文件,但这似乎是全有或全无。如果我这样做:

    MultipleOutputs.addNamedOutput(job, "ToGzip", TextOutputFormat.class, NullWritable.class, Text.class);
    TextOutputFormat.setCompressOutput(job, true);
    TextOutputFormat.setOutputCompressorClass(job, GzipCodec.class);

它将压缩所有内容,而不仅仅是我想要的文件。如果你看看这个非常相似的问题:

Hadoop: How to output different format types in the same job?

你会看到它会解决我的问题,但是它使用旧界面而新界面没有:

context.getConfiguration().setOutputCompressorClass(GzipCodec.class); 

新的 Hadoop API 的等效解决方案是什么?

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    简短的回答是,我认为你现在不能。

    更长的答案/咆哮。 Hadoop 中的多个输出是一团糟。添加 HBase,它真的变得一团糟。今天存在的多输出“功能”似乎更像是一个“足够好”的脆弱黑客。由于选项通常是工作范围的,因此对单个输出几乎没有精细控制。

    如果您需要输出特定压缩,那么最好的办法是通过扩展现有的输出格式来创建自己的输出格式。

    【讨论】:

    • 感谢您的回答。我继续并简单地扩展了 TextOutputFormat 来压缩输出。因为你的好建议,我接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2013-12-10
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多