/** * Get the field out of the row without checking whether parsing is needed. This is called by both * getField and getFieldsAsList. * * @param fieldID The id of the field starting from 0. * @return The value of the field */ private Object uncheckedGetField(int fieldID) { LazyObjectBase[] fields = getFields(); boolean[] fieldsInited = getFieldInited(); if (!fieldsInited[fieldID]) { fieldsInited[fieldID] = true; ColumnMapping colMap = columnsMapping[fieldID]; if (!colMap.hbaseRowKey && !colMap.hbaseTimestamp && colMap.qualifierName == null) { // it is a column family // primitive type for Map<Key, Value> can be stored in binary format. Pass in the // qualifier prefix to cherry pick the qualifiers that match the prefix instead of picking // up everything ((LazyHBaseCellMap) fields[fieldID]) .init( result, colMap.familyNameBytes, colMap.binaryStorage, colMap.qualifierPrefixBytes, colMap.isDoPrefixCut()); return fields[fieldID].getObject(); } if (colMap.hbaseTimestamp) { // Get the latest timestamp of all the cells as the row timestamp long timestamp = result.rawCells()[0].getTimestamp(); // from hbase-0.96.0 for (int i = 1; i < result.rawCells().length; i++) { timestamp = Math.max(timestamp, result.rawCells()[i].getTimestamp()); } LazyObjectBase lz = fields[fieldID]; if (lz instanceof LazyTimestamp) { ((LazyTimestamp) lz).getWritableObject().setTime(timestamp); } else { ((LazyLong) lz).getWritableObject().set(timestamp); } return lz.getObject(); } byte[] bytes; if (colMap.hbaseRowKey) { bytes = result.getRow(); } else { // it is a column i.e. a column-family with column-qualifier bytes = result.getValue(colMap.familyNameBytes, colMap.qualifierNameBytes); } if (bytes == null || isNull(oi.getNullSequence(), bytes, 0, bytes.length)) { fields[fieldID].setNull(); } else { ByteArrayRef ref = new ByteArrayRef(); ref.setData(bytes); fields[fieldID].init(ref, 0, bytes.length); } } return fields[fieldID].getObject(); }