Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Pig Wiki" for change
The "Pig070LoadStoreHowTo" page has been changed by PradeepKamath.
The !LoadFunc abstract class is the main class to extend for implementing a
loader. The methods which need to be overriden are explained below:
* getInputFormat() :This method will be called by Pig to get the
!InputFormat used by the loader. The methods in the !InputFormat (and
underlying !RecordReader) will be called by pig in the same manner (and in the
same context) as by Hadoop in a map-reduce java program. If the !InputFormat is
a hadoop packaged one, the implementation should use the new API based one
under org.apache.hadoop.mapreduce. If it is a custom !InputFormat, it should be
implemented using the new API in org.apache.hadoop.mapreduce. If a custom
loader using a text-based !InputFormat or a file based !InputFormat would like
to read files in all subdirectories under a given input directory recursively,
then it should use the !PigFileInputFormat and !PigTextInputFormat classes
provided in org.apache.pig.backend.hadoop.executionengine.mapReduceLayer. This
is to work around the current limitation in Hadoop's !TextInputFormat and
!FileInputFormat which only read one level down from provided input directory.
So for example if the input in the load statement is 'dir1' and there are
subdirs 'dir2' and 'dir2/dir3' underneath dir1, using Hadoop's !TextInputFormat
or !FileInputFormat only files under 'dir1' can be read. Using
!PigFileInputFormat or !PigTextInputFormat (or by extending them), files in all
the directories can be read.
- Changes to custom Load Functions
- Low to medium
- This is to get around the problem of MAPREDUCE-1577.
* setLocation() :This method is called by Pig to communicate the load
location to the loader. The loader should use this method to communicate the
same information to the underlying !InputFormat. This method is called multiple
times by pig - implementations should bear this in mind and should ensure there
are no inconsistent side effects due to the multiple calls.
* prepareToRead() : Through this method the !RecordReader associated with
the !InputFormat provided by the !LoadFunc is passed to the !LoadFunc. The
!RecordReader can then be used by the implementation in getNext() to return a
tuple representing a record of data back to pig.
* getNext() :The meaning of getNext() has not changed and is called by Pig
runtime to get the next tuple in the data - in this method the implementation
should use the the underlying !RecordReader and construct the tuple to return.