我正在用Java编写香草MapReduce。我必须处理很多sequencefile,并且我只想读取x%的输入。
这是我的逻辑:
protected void map(BytesWritable key, BytesWritable val, Context context){
if (random.nextDouble() > sampleRate) {
return;
}
//code to process data if it's under the sample rate of x
}
如果我这样做的话,很少有行会进入处理阶段,但是我注意到即使设置x = 0.1,运行时间和内存使用也不会减少太多
我怀疑花费大量时间将数据加载到任务中。我怎样做才能改善采样的运行时间?
我的目标是读取总输入行的x%。我已经对sequencefile(我的输入)使用了逻辑拆分,因此在将数据加载到Mapper任务时,数据应该平均分配。
谢谢