我想计算输入拆分的sha256哈希值,而映射器的输出应为

(键,值)其中,键是块开始的位置
值是完整块的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);

最佳答案

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

  • http://www.mkyong.com/java/java-sha-hashing-example/
  • 关于java - Hadoop ..如何计算输入拆分的哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9229183/

    10-16 02:58