@Override public boolean next(LongWritable key, Text value) throws IOException { try { if (!reader_.records().hasNext()) return false; Records.Record record = reader_.records().next(); if (record.isNull(0)) { value.set(EMPTY); } else { ByteArray data = record.nextByteArray(0); value.set(data.byteBuffer().array(), data.offset(), data.len()); } key.set(recordNum_++); return true; } catch (RecordServiceException e) { throw new IOException("Could not get next record.", e); } }
/** * Advances to the next record. * Returns true if there are more values to retrieve, false otherwise. */ @Override public boolean nextKeyValue() throws IOException, InterruptedException { try { if (!reader_.records().hasNext()) return false; } catch (RecordServiceException e) { // TODO: is this the most proper way to deal with this in MR? throw new IOException("Could not fetch record.", e); } Records.Record record = reader_.records().next(); if (record.isNull(0)) { record_.set(EMPTY); } else { ByteArray data = record.nextByteArray(0); record_.set(data.byteBuffer().array(), data.offset(), data.len()); } currentKey_.set(recordNum_++); return true; }
case VARCHAR: case CHAR: record.put(i, rsRecord.nextByteArray(rsIndex).toString()); break;
case VARCHAR: case CHAR: ByteArray s = record.nextByteArray(i); ((Text) columnValObjects_[i]).set( s.byteBuffer().array(), s.offset(), s.len());
case VARCHAR: case CHAR: record.put(i, rsRecord.nextByteArray(i).toString()); break; default: throw new RuntimeException(