2016-06-10 4 views
1

Я новичок в hadoop, поэтому мне трудно понять программы немного. Итак, если кто-то может помочь мне в понимании этой программы картографа?Объяснение программы mapper для поиска в hadoop

package SearchTxn; 

import java.io.IOException; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.NullWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Mapper; 

public class MyMap extends Mapper<LongWritable, Text, NullWritable, Text>{ 

     public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 

      String Txn = value.toString(); 
      String TxnParts[] = Txn.split(","); 
      Double Amt = Double.parseDouble(TxnParts[3]); 
      String Uid = TxnParts[2];   
      if(Uid.equals("4000010") && Amt>100) 
      { 
       context.write(null, value); 
      }   
     } 
    } 

ответ

1

Код в основном фильтрует строки, в которых Uid (второй столбец в вашем CSV) является «4000010» и Amt (я предполагаю, что на сумму, третий столбец в вашем CSV) больше, чем 100.

+0

Но каково значение context.write (null, value) ;? потому что, когда мы делали подсчет слов, мы ставили IntWritable one = new IntWritable (1) Текст outkey = новый Текст (слово) Позже выполнение context.out (outkey, value), но здесь, в этом вышеприведенном коде, я не получение того, что происходит в выходной строке, то есть в контексте. –

+0

@ KuldeepSingh, поэтому вы должны включить это в свой вопрос. Написание «null» в качестве ключа при использовании «TextOutputFormat» делает формат, который записывает только формат без ключа/значения seperator. –

0

Вместе с ответом @Thomas Jungblut, ниже строки вашей программы говорится о общем вводе и выходе класса Mapper. Здесь ничего не перенастроено как key, а текст как value.

public class MyMap extends Mapper<LongWritable, Text, NullWritable, Text>{ 

Так же параметры в методе записи.

context.write(null, value); 

Не всегда необходимо писать ключ для сериализации из класса Mapper. Согласно вашему варианту использования, либо ключ, либо значение или оба могут быть записаны в метод context.write.

+0

Это означает, что мы принимаем ключ как нуль и целую строку как ценность? –

+0

Ваше понимание верное. Не уверен в вашем случае использования, но если вы извлекаете что-то из ценности. Затем вы должны отправить их из картографа. Здесь значение - перенос переадресации, как и после некоторой проверки. – syadav

+0

Да, это программа для поиска определенной записи с некоторым количеством и количеством. Этот результат будет подаваться в редуктор. Итак, здесь мы взяли ключ как null и полную строку или сказали строку как значение? –

Смежные вопросы