Hadoop ..如何计算输入拆分的哈希值

时间:2012-02-10 14:18:38

标签: java hadoop mapreduce

我想计算输入分割的sha256哈希值,mapper的输出应该是

(键,值)其中key是块开始的位置 和value是完整块的sha256哈希值。

我的要求是阅读完整的输入拆分为一条记录。

这是我到目前为止所做的...(我已经将块大小设置为100 kb)..没有处理过键值的值部分。不只是输出1

public void map(LongWritable key, Text value,
      OutputCollector <LongWritable, IntWritable> output, Reporter reporter) throws IOException {

     LongWritable key_offset = new LongWritable();
     String line = value.toString();
     long block = 0;
     if (count == 0) {
       key_offset = key;
       block = key_offset.get();
       block = block / 100000;
       count++;
     }
     output.collect(new LongWritable(block), one);

1 个答案:

答案 0 :(得分:0)

您可以修改 Hadoop - 权威指南中的WholeFileInputFormat,以便不是将整个文件内容作为BytesWritable值传递,而是计算SHA256并将其作为值传递?您应该只需要修改WholeFileRecordReader.next()方法,用一些计算文件字节的SHA256的方法替换IOUtils.readFully - 可能是这样的: