Hadoop..как вычислить хэш входного разбиения - PullRequest
2 голосов
/ 10 февраля 2012

Я хочу вычислить хэш sha256 для разделения входных данных, и вывод mapper должен быть равен

(ключ, значение), где ключ - это местоположение начала блока, а значение - хеш sha256полный блок ..

Мое ТРЕБОВАНИЕ - прочитать полный входной сплит как одну запись.

Вот что я сделал до сих пор ... (Я принял размер блока как 100 КБ)..Не работали над значением части ключа, значением.Право, не просто вывод 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);

1 Ответ

0 голосов
/ 07 июня 2012

Можете ли вы изменить WholeFileInputFormat из Hadoop - полное руководство , чтобы вместо передачи всего содержимого файла в качестве значения BytesWritable вы вычисляли SHA256 и передавали его какзначение?Вам просто нужно изменить метод WholeFileRecordReader.next (), заменив IOUtils.readFully каким-либо методом для вычисления SHA256 байтов файла - возможно, что-то вроде:

...