我想计算输入分割的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);
答案 0 :(得分:0)
您可以修改 Hadoop - 权威指南中的WholeFileInputFormat,以便不是将整个文件内容作为BytesWritable值传递,而是计算SHA256并将其作为值传递?您应该只需要修改WholeFileRecordReader.next()方法,用一些计算文件字节的SHA256的方法替换IOUtils.readFully - 可能是这样的: