我有一个MapReduce任务,它有以下输入文件
File1 value1
File1 value2
File2 value3
File2 value4映射器将访问文件名并搜索其中的特定值。
问:我希望有一种优化技术来优化这些文件的磁盘访问。我需要将相同的文件id分配给同一个映射器。因此,我可以确保一次只有一个任务可以访问该文件。
示例:必填
Mapper 1: File1 (value1), File1 (value2)
Mapper 2: File2 (value3), File2 (value4)不需要:
Mapper 1: File1 (value1), File2 (value3)
Mapper 2: File1 (value2), File2 (value4)有什么帮助吗?
发布于 2012-07-23 05:56:20
我想这是
File1 value1
File1 value2
File2 value3
File2 value4写入到现有文件中
确保所需内容的方法是按第一列对此输入文件进行排序(并按排序进行存储)
发布于 2012-07-23 08:52:45
我认为如果不对输入数据进行分区,就不可能将特定数据发送到映射任务。根据需要对输入数据进行分区,并使用TextFileInputFormar.isSplittable()。
发布于 2012-07-23 11:30:44
我可以谦虚地建议你使用减速机来达到你想要的效果。
将键的所有值都放入同一个任务中正是"reduce“的定义。
如果需要进一步减少,请对第一个作业的输出运行另一个作业。
https://stackoverflow.com/questions/11603338
复制相似问题