【发布时间】:2012-02-13 10:05:54
【问题描述】:
我是 Hadoop 的新手,遇到以下问题。我要做的是将数据库的一个分片(请不要问我为什么需要这样做等)映射到映射器,然后对这些数据进行某些操作,将结果输出到减速器并使用该输出再次使用相同的分片格式对相同的数据执行第二阶段映射/缩减作业。
Hadoop 不提供任何输入方法来发送数据库的分片。您只能使用LineInputFormat 和LineRecordReader 逐行发送。 NLineInputFormat 在这种情况下也无济于事。我需要扩展FileInputFormat 和RecordReader 类来编写我自己的InputFormat。有人建议我使用LineRecordReader,因为底层代码已经处理了FileSplits 以及与拆分文件相关的所有问题。
我现在需要做的就是重写 nextKeyValue() 方法,我不知道该怎么做。
for(int i=0;i<shard_size;i++){
if(lineRecordReader.nextKeyValue()){
lineValue.append(lineRecordReader.getCurrentValue().getBytes(),0,lineRecordReader.getCurrentValue().getLength());
}
}
上面的代码sn-p是写出来的,但不知何故不能正常工作。
【问题讨论】: