2014-02-24 34 views
2

我正在研究Hadoop中的TotalOrderPartioner,并且我还没有完全理解如何以及在哪里创建分区文件。hadoop中的分区文件是如何创建的

我的理解迄今为止是

InputSampler.Sampler采样=新InputSampler.RandomSampler(0.1,10000); InputSampler.writePartitionFile(job,sampler);

如果我使用适当的输入和输出路径配置作业对象并使用独立程序运行它,它应该为输出路径上的分区文件创建。

该处理以创建将发生在客户端机器上的这个划分文件,因此用于创建该文件中的样本和分裂将来自各种数据节点流传输到客户端机器,然后进行排序,然后将分割的文件将是创建。

一旦这样做了,我就可以使用这个分区文件输入到TotalOrderPartitioner对于使用类似于用于生成这个分区的文件一个一个输入源的各种其他工作

可有人请确认我的理解?

回答

0

当你实现一个mapReduce作业时,至少有一个Mapper,一个Reducer和一个配置和执行作业的类。在最后一个类中,您将创建分割文件的代码(即分区文件)放入。

此类中的逻辑:

  • 配置与映射器和减速器和其它性质的作业,然后
  • 创建分区文件和最后
  • 提交对执行中的作业

该方法使整个流程的分区文件部分的创建成为可能,并使作业提交一步到位。

+0

我同意,让我们把这个类命名为“Driver class”,但是我询问这个​​代码在哪里执行,它在客户端机器上吗?因此整个采样代码以及生成分区文件的代码也将在客户端机器上执行......这是我的理解......想检查它是否合理 – Sudarshan

+0

啊。抱歉。是的,它在运行作业配置类的机器上,通常是客户端。你是对的 –