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

Java Hadoop..如何计算输入拆分的哈希,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我想计算输入分割的sha256散列,映射器的输出应该是 (键,值),其中键是块的开始位置 值是完整块的sha256哈希 我的要求是将完整的输入拆分为一条记录 以下是我到目前为止所做的。。(我将块大小设置为100 kb)…没有处理键Value的值部分。对,不仅仅是输出1 public void map(LongWritable key, Text value, OutputCollector <LongWritable, IntWritable> output, Repor

我想计算输入分割的sha256散列,映射器的输出应该是

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

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

以下是我到目前为止所做的。。(我将块大小设置为100 kb)…没有处理键Value的值部分。对,不仅仅是输出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);
public void映射(可长写键、文本值、,
OutputCollector输出,Reporter)引发IOException{
LongWritable key_offset=新的LongWritable();
字符串行=value.toString();
长块=0;
如果(计数=0){
键偏移量=键;
block=key_offset.get();
区块=区块/100000;
计数++;
}
collect(新的LongWritable(块),一个);
您能否修改Hadoop-最终指南中的,以便计算SHA256并将其作为值传递,而不是将整个文件内容作为BytesWritable值传递?您只需要修改整个FileRecordReader。next()方法将IOUtils.ready替换为用于计算文件字节的SHA256的某种方法-可能类似于:

您能否修改Hadoop-最终指南中的,以便计算SHA256并将其作为值传递,而不是将整个文件内容作为BytesWritable值传递?您只需要修改整个FileRecordReader。next()方法将IOUtils.ready替换为用于计算文件字节的SHA256的某种方法-可能类似于:


输入是一个文件。.内容和格式不重要。唯一重要的是计算完整输入拆分的哈希值,然后映射器的输出(block\u offset,block\u hash)我用它来计算文件的散列树..所以mapper在计算叶节点的散列。你需要一个自定义的输入格式来访问原始二进制数据。你的要求包括处理不同的拆分大小吗?你的代码写入了旧的API。你也能使用新的API吗?输入是一个文件..内容和格式不一致另外,唯一重要的是计算完整输入分割的散列,然后映射器的输出应该是我(block_offset,block_hash)我用它来计算文件的散列树..所以mapper正在计算叶节点的散列。您需要自定义输入格式来访问原始二进制数据您的要求包括处理不同的拆分大小吗?您的代码写入旧API。您也可以使用新API吗?