in rcfile/src/main/java/com/twitter/elephantbird/pig/store/RCFilePigStorage.java [147:177]
public Tuple getNext() throws IOException {
try {
if (!in.nextKeyValue()) {
return null;
}
BytesRefArrayWritable byteRefs = (BytesRefArrayWritable) in.getCurrentValue();
boolean isProjected = requiredColumns != null;
int inputSize = byteRefs.size();
int tupleSize = isProjected ? requiredColumns.length : inputSize;
Tuple tuple = tupleFactory.newTuple(tupleSize);
int tupleIdx = 0;
for (int i=0; i<inputSize && tupleIdx<tupleSize; i++) {
if (!isProjected || i == requiredColumns[tupleIdx]) {
// set if all the fields are required or the field is projected
BytesRefWritable ref = byteRefs.get(i);
if (ref != null && ref.getLength() > 0) {
tuple.set(tupleIdx, new DataByteArray(ref.getBytesCopy()));
}
tupleIdx++;
}
}
return tuple;
} catch (InterruptedException e) {
throw new IOException(e);
}
}