OutputFormat principio de salida de datos de la trama hadoop-MapReduce

clase de interfaz 1.OutputFormat

  salida OutputFormat MapReduce es la clase base, todas las salidas se implementan para lograr interfaces de MapReduce OutputFormat;

  TextOutputFormat de salida 1.1 del texto

    TextOutputFormat formato de salida predeterminado, se escribe en cada línea de texto de grabación; clave y su valor puede ser cualquier tipo, como método para convertirlos en una cadena llamada toString TextOutputFormat ();

  1.2 SequenceFileOutputFormat

    La subsiguiente SequenceFileOutputFormat MapReduce como entrada la salida de la tarea, que es un formato de salida buena, debido a su forma compacta, fácil de compresa;

  1.3 OutputFormat personalizada

    De acuerdo con las necesidades del usuario, salida de implementación personalizada;

2. OutputFormat personalizada

  2.1 escenarios de uso

    Con el fin de lograr el control final de los formatos de ruta de salida y los archivos de salida, puede ser automáticamente el OutputFormat;

    Por ejemplo: para un tipo de programa de MapReduce en función de los datos de resultado de salida a un directorio diferente, como la demanda de salida flexible puede lograrse mediante OutputFormat costumbre;

  2.2 Personalización de paso OutputFormat

    2.2.1 una clase personalizada que hereda FileOutputFormat;

    2.2.2 reescritura RecordWriter, datos de salida específicos de reescritura Write ();

  2.3 demanda

    Log filtro de entrada de registro, que comprende baidu sitio de salida baidu.log a un archivo, que no contiene el sitio para archivo de salida baidu other.log;

http: // www.baidu.com 
http: // www.google.com 
http: // cn.bing.com 
http: // www.baidu.com 
http: // www.sohu.com 
http: // www .sina.com 
http: // www.sin2a.com 
http: // www.sin2desa.com 
http: // www.sindsafa.com

funcionamiento práctico 3. Caso de encargo OutputFormat

  Escribe 3.1 FilterMapper

com.wn.outputformat empaquetar; 

org.apache.hadoop.io.LongWritable importación; 
org.apache.hadoop.io.NullWritable importación; 
org.apache.hadoop.io.Text importación; 
org.apache.hadoop.mapreduce.Mapper importación; 

java.io.IOException importación; 

público  de clase FilterMapper extiende Mapper <LongWritable, texto, texto, NullWritable> { 
    @ Override 
    protegida  nula mapa (clave LongWritable, Valor de texto, el contexto Contexto) throws IOException, InterruptedException {
         // 写出 
        context.write (valor, NullWritable. obtener () ); 
    } 
}

  Escribe 3.2 FilterReducer

com.wn.outputformat empaquetar; 

org.apache.hadoop.io.NullWritable importación; 
org.apache.hadoop.io.Text importación; 
org.apache.hadoop.mapreduce.Reducer importación; 

java.io.IOException importación; 

público  de clase FilterReducer extiende Reductor <texto, NullWritable, texto, NullWritable> { 

    texto texto = nuevo texto (); 

    @ Override 
    protegida  vacío reducir (clave de texto, Iterable <NullWritable> valores, el contexto Contexto) throws IOException, InterruptedException {
         // 获取一行 
        línea String = text.toString ();
        // 拼接 
        línea = línea + " \ r \ n" ;
         // conjunto 
        . Texto SET (Línea);
         // salida 
        context.write (texto, NullWritable. GET ()); 
    } 
}

  Escribe 3.3 FilterRecordWriter

com.wn.outputformat empaquetar; 

org.apache.hadoop.fs.FSDataOutputStream importación; 
org.apache.hadoop.fs.FileSystem importación; 
org.apache.hadoop.fs.Path importación; 
org.apache.hadoop.io.IOUtils de importación; 
org.apache.hadoop.io.NullWritable importación; 
org.apache.hadoop.io.Text importación; 
org.apache.hadoop.mapreduce.RecordWriter importación; 
org.apache.hadoop.mapreduce.TaskAttemptContext importación; 

java.io.IOException importación; 

público  de clase FilterRecordWriter extiende RecordWriter <texto, NullWritable> { 

    FSDataOutputStream atguiguOut = nula ; 
    FSDataOutputStream otherOut = nulo ; 

    públicoFilterRecordWriter (TaskAttemptContext Trabajo) {
         // Obtener el sistema de archivos 
        del FS sistema de archivos;
         el try { 
            FS . = El sistema de ficheros GET (job.getConfiguration ());
             // crea una ruta de archivo de salida para 
            el Camino atguiguPath = nuevo nuevo el camino ( " E: \\ \\ APTECH Hadoop grandes de datos \\ \\ baidu.log 04 " ); 
            el Sendero otherPath = nuevo nuevo el camino ( " E: \\ APTECH Hadoop \\ \\ \\ grandes de datos other.log 04 " );
             // crear el flujo de salida 
            atguiguOut = fs.create (atguiguPath); 
            otherOut =fs.create (otherPath); 
        } Catch (IOException e) { 
            e.printStackTrace (); 
        } 
    } 

    @ Override 
    pública  vacío (texto texto, NullWritable nullWritable) throws IOException escritura, InterruptedException {
         // 判断franqueo "Baidu"输出到不同文件
        si (text.toString (). (Contiene " Baidu " )) { 
            atguiguOut.write ( text.toString () getBytes ()).; 
        } Demás { 
            otherOut.write (. Text.toString () getBytes ()); 
        } 
    } 

    @ Override 
    pública  nulacerrar (TaskAttemptContext taskAttemptContext) lanza IOException, InterruptedException {
         // 关闭资源
        IOUtils.closeStream (atguiguOut); 
        IOUtils.closeStream (otherOut); 
    } 
}

  Escribe 3.4 FilterOutputFormat

com.wn.outputformat empaquetar; 


java.io.IOException importación; 

org.apache.hadoop.io.NullWritable importación; 
org.apache.hadoop.io.Text importación; 
org.apache.hadoop.mapreduce.RecordWriter importación; 
org.apache.hadoop.mapreduce.TaskAttemptContext importación; 
org.apache.hadoop.mapreduce.lib.output.FileOutputFormat importación; 


público  de clase FilterOutputFormat extiende FileOutputFormat <texto, NullWritable> { 

    @ Override 
    pública RecordWriter <texto, NullWritable> getRecordWriter (TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
         devolver  nueva FilterRecordWriter (taskAttemptContext); 
    } 
}

  Escribe 3,5 FilterDriver

com.wn.outputformat paquete; 

Importación org.apache.hadoop.conf.Configuration; 
Importación org.apache.hadoop.fs.Path; 
Importación org.apache.hadoop.io.NullWritable; 
Importación org.apache.hadoop.io.Text ; 
org.apache.hadoop.mapreduce.Job importación; 
importación org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
importación org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 

importación java.io.IOException; 

pública  clase FilterDriver {
     públicas  estáticas  void main (String [] args) throws IOException, un ClassNotFoundException, InterruptedException {
         // necesidades de entrada y de salida de la trayectoria de engaste de acuerdo con las rutas de entrada y salida reales en su ordenador 
        args = new new String [] {" E: \\ \\北大青鸟大数据04 \\ \\ hadoop de entrada " , " E: \\ \\北大青鸟大数据04 \\ \\ hadoop salida " }; 
        Conf Configuración = nueva configuración (); 
        Profesión Profesión = Job.getInstance (conf); 

        job.setJarByClass (FilterDriver. clase ); 
        job.setMapperClass (FilterMapper. clase ); 
        job.setReducerClass (FilterReducer. clase ); 

        job.setMapOutputKeyClass (. Texto de clase ); 
        job.setMapOutputValueClass (NullWritable. clase ); 

        job.setOutputKeyClass (texto.clase ); 
        job.setOutputValueClass (NullWritable. clase ); 

        // formato de salida propios ajustes de componentes para el trabajo 
        job.setOutputFormatClass (FilterOutputFormat. clase ); 

        FileInputFormat.setInputPaths (trabajo, nueva nuevo la ruta (args [ 0 ])) ; 

        FileOutputFormat.setOutputPath (Job, nuevos nuevo la ruta (args [ . 1 ])); 

        Boolean B = job.waitForCompletion ( true ); 
        System.exit (B ? 0 : 1. ); 
    } 
}

 

Supongo que te gusta

Origin www.cnblogs.com/wnwn/p/12642495.html
Recomendado
Clasificación