Java tutorial
/* Copyright (c) 2012-2013 by Virginia Polytechnic Institute and State * University * All rights reserved. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT REPRESENTATIONS * OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT, OR THE * ABSENCE OF LATENT OR OTHER DEFECTS, WHETHER OR NOT * DISCOVERABLE. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, INCIDENTAL OR CONSEQUENTIAL * DAMAGES OF ANY KIND, OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. */ package org.broadinstitute.sting.gatk.hadoop; import java.io.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.RecordReader; import org.apache.hadoop.mapreduce.lib.input.FileSplit; public class WholeFileRecordReader extends RecordReader<LongWritable, Text> { private final LongWritable key = new LongWritable(); private final Text record = new Text(); private boolean called = false; private Path file; private int progress = 1; private TaskAttemptContext context; public void initialize(InputSplit spl, TaskAttemptContext ctx) throws IOException { context = ctx; file = ((FileSplit) spl).getPath(); } @Override public float getProgress() { if ((progress++ % 100) == 0) { context.progress(); } return progress; } @Override public void close() throws IOException { } @Override public LongWritable getCurrentKey() { return key; } @Override public Text getCurrentValue() { return record; } @Override public boolean nextKeyValue() throws IOException { if (called) return false; String f = file.getName(); String filename = f.substring(0, 6); try { key.set(Long.valueOf(filename)); } catch (NumberFormatException e) { key.set(Long.valueOf("000000")); } record.set(file.toString()); called = true; return true; } }