分析总订单分区的阶段

时间:2014-02-22 20:07:59

标签: hadoop mapreduce

Map Reduce Design Patterns Book

  

如果您的数据分布不会随着时间的推移而快速变化,则只需运行一次,因为它产生的值范围将继续良好运行。

我无法理解声明的含义,这是一般观察还是在使用TotalOrderPartitioner时实际可以实现?

我们能否以某种方式要求TotalOrderPartitioner不创建分区文件并仅使用已创建的文件?

使用TotalOrderPartitioner时,我基本上可以跳过分析阶段吗?

1 个答案:

答案 0 :(得分:1)

使用TotalOrderPartitioner时可以轻松实现:

   TotalOrderPartitioner.setPartitionFile(job.getConfiguration(), partitionFile); // use existing file!!!

   // InputSampler.writePartitionFile(job, sampler); // Just comment out this line!!!

请注意,来自javadoc:

  

public static void setPartitionFile(Configuration conf,                                       路径p)

     

//设置存储已排序分区键集的SequenceFile的路径。   必须是这样的情况,对于R减少,SequenceFile中有R-1个键。

如果重新运行排序 - 如果数据稍有变化并且样本仍然可以很好地表示它 - 您可以将现有分区文件与样本一起使用,因为InputSampler在客户端上的创建是昂贵的。但您必须使用相同数量的Reducers,就像您在InputSampler创建分区文件的作业中使用的那样。