예제 #1
0
  public void draw(Configuration conf) throws IOException {
    List<Pair<Integer, Integer>> list = new ArrayList<Pair<Integer, Integer>>();
    SequenceFileDirIterator<IntWritable, IntWritable> iterator =
        new SequenceFileDirIterator<IntWritable, IntWritable>(
            inputPath, PathType.LIST, MultipleSequenceOutputFormat.FILTER, null, true, conf);
    while (iterator.hasNext()) {
      Pair<IntWritable, IntWritable> writablePair = iterator.next();
      Pair<Integer, Integer> pair =
          new Pair<Integer, Integer>(writablePair.getFirst().get(), writablePair.getSecond().get());
      list.add(pair);
    }
    iterator.close();
    Collections.sort(
        list,
        new Comparator<Pair<Integer, Integer>>() {
          @Override
          public int compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
            if (o1.getFirst() < o2.getFirst()) {
              return -1;
            }
            return 1;
          }
        });
    XYDataset dataSet = createDataSet(list);
    JFreeChart chart =
        ChartFactory.createXYLineChart(
            title, "", "count", dataSet, PlotOrientation.VERTICAL, true, true, false);
    XYPlot plot = (XYPlot) chart.getPlot();
    NumberAxis axis = (NumberAxis) plot.getRangeAxis();
    axis.setNumberFormatOverride(numberFormat);

    BufferedImage image = chart.createBufferedImage(WIDTH, HEIGHT);
    ImageIO.write(image, FORMAT, new File(imgFile));
  }
 private Map<Integer, Long> buildOffsets(Path input, long startIndex) throws IOException {
   Map<Integer, Long> offsets = new HashMap<Integer, Long>();
   SequenceFileDirIterator<IntWritable, LongWritable> iter =
       new SequenceFileDirIterator<IntWritable, LongWritable>(
           new Path(input + "/part*"), PathType.GLOB, null, null, true, new Configuration());
   long cusum = startIndex;
   while (iter.hasNext()) {
     Pair<IntWritable, LongWritable> e = iter.next();
     int partitionId = e.getFirst().get();
     long currentLineNum = e.getSecond().get();
     offsets.put(partitionId, cusum);
     cusum += currentLineNum;
   }
   return offsets;
 }