【问题标题】:hadoop, map/reduce output file(part-00000) and distributed cachehadoop、map/reduce 输出文件(part-00000)和分布式缓存
【发布时间】:2010-07-08 08:12:39
【问题描述】:

我的 map/reduce 输出的值是一个字节可写数组,它被写入输出文件 part-00000(hadoop 默认这样做)。我的下一个地图函数需要这个数组,所以我想把这个数组保存在分布式缓存中。有人能告诉我如何从可能不是文本文件的输出文件(part-00000)中读取并存储在分布式缓存中。

【问题讨论】:

  • 一般来说 Hadoop 会输出一个包含很多部分...文件的目录。你不能假设你只有一个输出文件。

标签: java hadoop


【解决方案1】:

我的建议:

使用以下属性创建一个新的 Hadoop 作业:

  • 输入所有part-...文件所在的目录。
  • 创建一个写入分布式缓存的自定义 OutputFormat 类。
  • 现在让你的工作看起来基本上是这样的:

    conf.setInputFormat(SequenceFileInputFormat.class);
    conf.setMapperClass(IdentityMapper.class);
    conf.setReducerClass(IdentityReducer.class);
    conf.setOutputFormat(DistributedCacheOutputFormat.class);
    

查看 Yahoo Hadoop 教程,因为它有一些关于这一点的示例:http://developer.yahoo.com/hadoop/tutorial/module5.html#outputformat

HTH

【讨论】:

  • 感谢您的解释,但我需要更多详细说明自定义输出格式以写入分布式缓存
  • 我假设您的分布式缓存软件允许您编写一个客户端来将值放入其中。现在以 Yahoo 为例,在“void write(K key, V value)”方法中调用分布式缓存软件的 API。
猜你喜欢
  • 2014-08-05
  • 2016-08-05
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多