You could try following the same pattern as the AccumuloInputFormat: Create your own JamieInputFormatWithIterator which has static methods which will make all of the AIF.addIterator(...) calls you need, delegating the interface methods to AIF. This could also just be utility methods and you would leave your AIF calls as-is.

IMO, this is often just done in your org.apache.hadoop.util.Tool implementation before submitting the job to run.

Jamie Johnson wrote:
I had been handling this in the input format where I don't have access
to the job.  Should this be handled in a tool instead?

I have thought about doing it in the input splits in initialize but it
requires a cast to range input split so it seemed like there might be a
better way.


On Aug 17, 2016 5:31 PM, "Russ Weeks" <[email protected]
<mailto:[email protected]>> wrote:

    Hi, Jamie,

    Try the static method AccumuloInputFormat.addIterator(job, new
    IteratorSetting(...)).

    Note that the method isn't idempotent. To clear the iterators on a
    job you can
    call job.getConfiguration.unset("AccumuloInputFormat.ScanOpts.Iterators")
    (but that isn't officially part of the public API)

    -Russ

    On Wed, Aug 17, 2016 at 2:26 PM Jamie Johnson <[email protected]
    <mailto:[email protected]>> wrote:

        I am upgrading from Accumulo 1.6 to 1.7 and I am trying to
        understand how iterators are supposed to be set in 1.7 for an
        input format.  In my situation, if a particular property is set
        an additional iterator needs to be added to do some additional
        checking.  Previously I had done this in the
        AbstractRecordReader.setupIterators() method but this has been
        deprecated.  I had attempted to put them in
        AbstractRecordReader.contextIterators(), but this isn't always
        called.  This change has made me question if I was ever doing
        this according to best practices and now wonder what the correct
        way to do this is.  Any pointers would be greatly appreciated.


Reply via email to