我想计算输入拆分的sha256哈希,映射器的输出应该是
(键,值)其中键是块的起始位置并且value是完整块的sha256散列。。
我的要求是阅读完整的输入拆分为一个记录。
以下是我到目前为止所做的。。(我把块大小取为100kb)。。没有对键的Value部分进行过操作,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);
您能从Hadoop-最终指南中修改WholeFileInputFormat吗?这样,您就可以计算SHA256并将其作为值传递,而不是将整个文件内容作为BytesWritable值传递?您只需要修改WholeFileRecordReader.next()方法,将IOUtils.readFully替换为一些计算文件字节的SHA256的方法,可能类似于:
- http://www.mkyong.com/java/java-sha-hashing-example/