【问题标题】:Hadoop SequenceFile Input/output for the intermediate jobs in a workflow工作流中中间作业的 Hadoop SequenceFile 输入/输出
【发布时间】:2012-05-30 02:15:09
【问题描述】:

我有一个多阶段/作业 mapreduce 程序。我的第一个输入必须是 TextInputFormat,最后一个输出必须是 TextOutputFormat。我想要实现的是在第一个 Job 中将格式从 Text 转换为 SequenceFile。因此:

TextInputFormat
Job1.execute()
SequenceFileOutputFormat

SequenceFileInputFormat
Job2.execute()
SequenceFileOutputFormat

...

SequenceFileInputFormat
JobLast.execute()
TextOutputFormat

在所有示例中,我发现这是通过创建一个额外的作业来实现的,该作业只是将输入写入一个 SequenceFile,另一个读取 SequenceFile 并将其以不同的格式存储。这可以在不使用额外工作的情况下完成吗?我可以这样做吗:

conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(SequenceFileOutputFormat.class);

当作业实际执行其计算时。我如何在不创建两个额外作业(写入和读取)的情况下实现这一点。

问题已解决,我在代码中的错误,对此感到抱歉。

【问题讨论】:

    标签: hadoop format mapreduce transformation


    【解决方案1】:

    您当然可以以任何您想要的形式存储输出。你真的不需要单独的工作。 SequenceFileOutputFormat 可以存储任何类型的键值,因此只需声明 conf.setOutputFormat(SequenceFileOutputFormat.class); 就可以了。你试过了吗?它没有工作吗?但请确保您的下一个映射作业的输入键和值类与您用于最后一个 reducer 的输出键/值类兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多