我想计算输入拆分的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的方法-也许像这样:
关于java - Hadoop ..如何计算输入拆分的哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9229183/