Package hipi.examples.createsequencefile

Source Code of hipi.examples.createsequencefile.CreateSequenceFile

package  hipi.examples.createsequencefile;


import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

import hipi.image.FloatImage;
import hipi.image.ImageHeader;
import hipi.image.ImageHeader.ImageType;
import hipi.image.io.ImageEncoder;
import hipi.image.io.JPEGImageUtil;
import hipi.imagebundle.mapreduce.ImageBundleInputFormat;

public class CreateSequenceFile extends Configured
implements Tool {

  public static class SequenceFileMapper extends Mapper<ImageHeader, FloatImage, LongWritable, BytesWritable> {

    @Override
    public void map(ImageHeader key, FloatImage value, Context context)
    throws IOException, InterruptedException {
      if(value != null){
        ImageEncoder encoder = JPEGImageUtil.getInstance();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        encoder.encodeImage(value, key, os);
        os.close();
        byte[] val = os.toByteArray();
        long sig = 0<<2 | ImageType.JPEG_IMAGE.toValue();
        context.write(new LongWritable(sig), new BytesWritable(val));
      }
    }

  }

  public int run(String[] args) throws Exception {
    //Setup configuration
    Configuration conf = new Configuration();
    if (args.length < 2)
    {
      System.out.println("args: " + args.length);
      System.out.println("Usage: createsequencefile <input hib> <outputdir>");
      System.exit(0);
    }
    // set the dir to output the jpegs to
    String outputPath = args[1];
    conf.setStrings("createsequencefile.outdir", outputPath);


    Job job = new Job(conf, "createsequencefile");
    job.setJarByClass(CreateSequenceFile.class);
    job.setMapperClass(SequenceFileMapper.class);
    job.setReducerClass(Reducer.class);

    // Set formats
    job.setOutputKeyClass(LongWritable.class);
    job.setOutputValueClass(BytesWritable.class);  
    job.setOutputFormatClass(SequenceFileOutputFormat.class);
    job.setInputFormatClass(ImageBundleInputFormat.class);

    // Set out/in paths
    removeDir(outputPath, conf);
    FileOutputFormat.setOutputPath(job, new Path(outputPath));
    FileInputFormat.setInputPaths(job, new Path(args[0]))

    job.setNumReduceTasks(1);
    System.exit(job.waitForCompletion(true) ? 0 : 1);
    return 0;

  }

  public static void main(String[] args) throws Exception {
    int exitCode = ToolRunner.run(new CreateSequenceFile(), args);
    System.exit(exitCode);
  }

  public static void removeDir(String path, Configuration conf) throws IOException {
    Path output_path = new Path(path);

    FileSystem fs = FileSystem.get(conf);

    if (fs.exists(output_path)) {
      fs.delete(output_path, true);
    }
  }
}
TOP

Related Classes of hipi.examples.createsequencefile.CreateSequenceFile

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.