Hvordan man opbygger en Inverted Index Med MapReduce
MapReduce er en parallel programmering model udviklet i Google for store datasæt. Den behandler data i bidder i stedet for i rækkefølge. Dermed bygger det på et kort over parrede input funktioner ( nøgler) og værdier, som det derefter sætter gennem Reducer funktion - dermed sit navn - for at gøre data lettere at forstå. I stedet for at give kortfunktion med en nøgle og værdi , en inverteret indeks par ord, og dokumenter for at søge tekst. Du kan bruge omvendte indeks i MapReduce at oprette et indeks for en søgning på nøgleord , for eksempel. Instruktioner 1
Skriv følgende kode for kortfunktion : Hej
public static class InvertedIndexerMapper udvider MapReduceBaseimplements Mapper { private endelige statiske tekst word = new Tekst (); private endelige statiske tekst placering = new Text ();
public void kort ( LongWritable nøgle, Text val , OutputCollector output, Reporter reporter ) kaster IOException { FileSplit fileSplit = ( FileSplit ) reporter.getInputSplit (); String filename = fileSplit.getPath () getName (); location.set (filename ),
String line - val.toString (); . StringTokenizer ITR = new StringTokenizer ( linje. toLowerCase ()); while ( itr.hasMoreTokens ( )) { word.set ( itr.nextToken ()); output.collect ( word , beliggenhed) ;} }} 2
Skriv følgende kode for at reducere funktionen : Hej
public static class InvertedIndexerReducer udvider MapReduceBaseimplements Reducer { public void reducere (Tekst nøgle, iterator værdier OutputCollector output, Reporter reporter ) kaster IOException { boolean først = true; StringBuilder toReturn = new StringBuilder () , mens ( values.hasNext () ) {if (første) toReturn.append (", "); ! først = false; toReturn . append ( . values.next () toString ()); } output.collect (nøgle , ny Tekst ( toReturn.toString ( ))) ;}} 3
Indtast følgende kode at fuldføre den omvendte index: