(Предполагая, что вы имеете в виду LoadFunc в Pig ...)
Я бы предложил написать новый метод, который делает то, что вы хотите, просто чтобы не нарушать оригинальное документированное использование getNext()
method.
Вы должны взглянуть на источник классов Pig, расширяющих LoadFunc
, и посмотреть, как они реализуют getNext()
.Например: TextLoader
Оттуда должно быть довольно тривиально делать то, что вы пытаетесь сделать.
Редактировать, чтобы попытаться предложить немного большеподробная справка:
(в качестве примера используется TextReader)
Метод getNext()
читает из RecordReader
.Это делается путем вызова RecordReader.nextKeyValue()
для перехода к следующей записи.Вы проверяете, верно ли это (имеется в виду чтение записи), и если это так, вы вызываете RecordReader.getCurrentValue()
, чтобы получить значение.
Допустим, вы хотите, чтобы только каждый пятый в качестве образца использовался в getNext()
:
int count = 0;
Text myText = null;
whlie(myRecordReader.nextKeyValue() == true)
{
if (count == 4)
{
myText = (Text) myRecordReader.getCurrentValue();
break;
}
count++;
}
if (myText != null) // we didn't hit the end; we have a record
{
... // create the tuple
return myTuple;
}
else
return null;
( исправил мою глупую ошибку "один на один" )