“Conocimientos Programación>Lenguajes De Programación

Cómo construir un índice invertido con MapReduce

2013/7/3
MapReduce es un modelo de programación paralela desarrollada en Google para los conjuntos de datos de gran tamaño . Procesa los datos en fragmentos más que en orden secuencial. Al hacerlo , se basa en un mapa de funciones de entrada emparejados ( teclas ) y los valores que a continuación pone a través de la función reduzca - por lo tanto , su nombre - para hacer más fácil de entender los datos . En lugar de proporcionar la función de mapa con una clave y un valor , un pares de índices invertidos palabras y los documentos para la búsqueda de texto. Puede utilizar índices invertidos en MapReduce para crear un índice para una búsqueda por palabra clave , por ejemplo. Instrucciones
1

Escriba el siguiente código para el mapa de funciones :

pública InvertedIndexerMapper clase estática se extiende MapReduceBaseimplements Mapper { palabra texto estático final privado = new Texto ( ) , la ubicación del texto estático final privado = new Texto ( ) ;

mapa public void (clave LongWritable , Texto val, OutputCollector , periodista periodista ) throws IOException { FileSplit FileSplit = ( FileSplit ) reporter.getInputSplit (); string nombre_archivo = fileSplit.getPath () getName (); location.set ( fileName ) ; High Line cuerdas

- val.toString ( ) . ITR StringTokenizer = new StringTokenizer ( línea. toLowerCase ()) , mientras que ( itr.hasMoreTokens ()) { word.set ( itr.nextToken ()); output.collect (word , ubicación) ;} } }
2

Escriba el siguiente código de la función de reducir :

pública InvertedIndexerReducer clase estática se extiende MapReduceBaseimplements Reductor { public void reducir (tecla de texto , valores Iterator , OutputCollector , periodista periodista ) throws IOException { booleano primero = true; StringBuilder toReturn = new StringBuilder (); while ( values.hasNext ()) { if ( primero ) toReturn.append (", "); ! primero = false; toReturn . append ( . values.next () toString ()) ;} output.collect ( , nuevo texto fundamental ( toReturn.toString ()) ) ;} }
3

Copiar el código para completar el índice invertido :

void (String [] args ) public static throws IOException { if ( args.length < 2 ) { System.outprintln ( "Uso: InvertedIndex < , ruta de salida > ") ; System.exit ( 1 ) ;} JobConf conf = new JobConf ( InvertedIndex.class ) ; conf.setJobName ( " InvertedIndex ");

conf.setOutputKeyClass ( Text.class ) ; conf.setOutputValueClass ( Text.class ) ;

conf.setMapperClass ( InvertedIndexerMapper.class ) ; conf.setReducerClass ( InvertedIndexerReducer.class ) ;
FileInputFormat.setInputPaths

( conf, nueva ruta ( args [ 0 ])) ; FileOutputFormat.setOutputPath ( conf, nueva ruta ( args [ 1 ] )); try { JobClient.runJob ( conf ) ; } catch ( Exception e ) { e.pringStackTrace () ;} }

Lenguajes De Programación
Carácter matriz vs cadenas
Cómo crear controles ActiveX
Cómo sincronizar a la lista de cambios
Cómo ver XBRL
Cómo compilar el código D en Vim
¿Qué es un argumento de Command
Cómo seleccionar texto en el cuadro de texto en ASP.NET
Cómo enlazar datos a un método en WPF
Conocimientos Informáticos © http://www.ordenador.online