Ejemplo n.º 1
0
  @Override
  public InputSplit[] getSplits(JobConf conf, int numberOfSplits) throws IOException {

    SplunkConf splunkConf = new SplunkConf(conf);
    Service mainService = SplunkService.connect(splunkConf);
    List<Indexer> indexers = IndexerProvider.getIndexers(SplunkService.connect(splunkConf));

    Indexer mainIndexer = new Indexer(mainService.getHost(), mainService.getPort());
    indexers.add(0, mainIndexer);

    InputSplit[] splits = new InputSplit[indexers.size()];

    for (int i = 0; i < indexers.size(); i++) {
      Indexer indexer = indexers.get(i);
      Service service = SplunkService.connect(splunkConf, indexer.getHost(), indexer.getPort());

      SplunkJob splunkJob = SplunkJob.createSplunkJob(service, splunkConf);

      int start = 0;

      // Add one for the header
      int end = splunkJob.getNumberOfResultsFromJob(splunkConf) + 1;
      boolean skipHeader = i > 0;

      splits[i] = new IndexerSplit(indexer, splunkJob.getJob().getSid(), start, end, skipHeader);
    }

    return splits;
  }