|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.hadoop.hbase.client.Result
@InterfaceAudience.Public @InterfaceStability.Stable public class Result
Single row result of a Get
or Scan
query.
This class is NOT THREAD SAFE.
Convenience methods are available that return various Map
structures and values directly.
To get a complete mapping of all cells in the Result, which can include
multiple families and multiple versions, use getMap()
.
To get a mapping of each family to its columns (qualifiers and values),
including only the latest version of each, use getNoVersionMap()
.
To get a mapping of qualifiers to latest values for an individual family use
getFamilyMap(byte[])
.
To get the latest value for a specific family and qualifier use getValue(byte[], byte[])
.
A Result is backed by an array of KeyValue
objects, each representing
an HBase cell defined by the row, family, qualifier, timestamp, and value.
The underlying KeyValue
objects can be accessed through the method listCells()
.
Each KeyValue can then be accessed through
KeyValue.getRow()
, KeyValue.getFamily()
, KeyValue.getQualifier()
,
KeyValue.getTimestamp()
, and KeyValue.getValue()
.
If you need to overwrite a Result with another Result instance -- as in the old 'mapred' RecordReader next
invocations -- then create an empty Result with the null constructor and in then use copyFrom(Result)
Field Summary | |
---|---|
static Result |
EMPTY_RESULT
|
Constructor Summary | |
---|---|
Result()
Creates an empty Result w/ no KeyValue payload; returns null if you call rawCells() . |
|
Result(KeyValue[] cells)
Deprecated. Use create(List) instead. |
|
Result(List<KeyValue> kvs)
Deprecated. Use create(List) instead. |
Method Summary | |
---|---|
protected int |
binarySearch(Cell[] kvs,
byte[] family,
byte[] qualifier)
|
protected int |
binarySearch(Cell[] kvs,
byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
Searches for the latest value for the specified column. |
CellScanner |
cellScanner()
|
static void |
compareResults(Result res1,
Result res2)
Does a deep comparison of two Results, down to the byte arrays. |
boolean |
containsColumn(byte[] family,
byte[] qualifier)
Checks for existence of a value for the specified column (empty or not). |
boolean |
containsColumn(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
Checks for existence of a value for the specified column (empty or not). |
boolean |
containsEmptyColumn(byte[] family,
byte[] qualifier)
Checks if the specified column contains an empty value (a zero-length byte array). |
boolean |
containsEmptyColumn(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
Checks if the specified column contains an empty value (a zero-length byte array). |
boolean |
containsNonEmptyColumn(byte[] family,
byte[] qualifier)
Checks if the specified column contains a non-empty value (not a zero-length byte array). |
boolean |
containsNonEmptyColumn(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
Checks if the specified column contains a non-empty value (not a zero-length byte array). |
void |
copyFrom(Result other)
Copy another Result into this one. |
static Result |
create(Cell[] cells)
Instantiate a Result with the specified array of KeyValues. |
static Result |
create(List<Cell> cells)
Instantiate a Result with the specified List of KeyValues. |
static Result |
create(List<Cell> cells,
Boolean exists)
|
List<KeyValue> |
getColumn(byte[] family,
byte[] qualifier)
Deprecated. Use getColumnCells(byte[], byte[]) instead. |
List<Cell> |
getColumnCells(byte[] family,
byte[] qualifier)
Return the Cells for the specific column. |
KeyValue |
getColumnLatest(byte[] family,
byte[] qualifier)
Deprecated. Use getColumnLatestCell(byte[], byte[]) instead. |
KeyValue |
getColumnLatest(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
Deprecated. Use getColumnLatestCell(byte[], int, int, byte[], int, int) instead. |
Cell |
getColumnLatestCell(byte[] family,
byte[] qualifier)
The Cell for the most recent timestamp for a given column. |
Cell |
getColumnLatestCell(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
The Cell for the most recent timestamp for a given column. |
Boolean |
getExists()
|
NavigableMap<byte[],byte[]> |
getFamilyMap(byte[] family)
Map of qualifiers to values. |
NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> |
getMap()
Map of families to all versions of its qualifiers and values. |
NavigableMap<byte[],NavigableMap<byte[],byte[]>> |
getNoVersionMap()
Map of families to their most recent qualifiers and values. |
byte[] |
getRow()
Method for retrieving the row key that corresponds to the row from which this Result was created. |
byte[] |
getValue(byte[] family,
byte[] qualifier)
Get the latest version of the specified column. |
ByteBuffer |
getValueAsByteBuffer(byte[] family,
byte[] qualifier)
Returns the value wrapped in a new ByteBuffer . |
ByteBuffer |
getValueAsByteBuffer(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength)
Returns the value wrapped in a new ByteBuffer . |
boolean |
isEmpty()
Check if the underlying Cell [] is empty or not |
List<KeyValue> |
list()
Deprecated. as of 0.96, use listCells() |
List<Cell> |
listCells()
Create a sorted list of the Cell's in this result. |
boolean |
loadValue(byte[] family,
byte[] qualifier,
ByteBuffer dst)
Loads the latest version of the specified column into the provided ByteBuffer . |
boolean |
loadValue(byte[] family,
int foffset,
int flength,
byte[] qualifier,
int qoffset,
int qlength,
ByteBuffer dst)
Loads the latest version of the specified column into the provided ByteBuffer . |
KeyValue[] |
raw()
Deprecated. as of 0.96, use rawCells() |
Cell[] |
rawCells()
Return the array of Cells backing this Result instance. |
void |
setExists(Boolean exists)
|
int |
size()
|
String |
toString()
|
byte[] |
value()
Returns the value of the first column in the Result. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final Result EMPTY_RESULT
Constructor Detail |
---|
public Result()
rawCells()
.
Use this to represent no results if null
won't do or in old 'mapred' as oppposed to 'mapreduce' package
MapReduce where you need to overwrite a Result
instance with a copyFrom(Result)
call.
@Deprecated public Result(KeyValue[] cells)
create(List)
instead.
@Deprecated public Result(List<KeyValue> kvs)
create(List)
instead.
Method Detail |
---|
public static Result create(List<Cell> cells)
cells
- List of cellspublic static Result create(List<Cell> cells, Boolean exists)
public static Result create(Cell[] cells)
cells
- array of cellspublic byte[] getRow()
public Cell[] rawCells()
KeyValue.COMPARATOR
.
The array only contains what your Get or Scan specifies and no more.
For example if you request column "A" 1 version you will have at most 1
Cell in the array. If you request column "A" with 2 version you will
have at most 2 Cells, with the first one being the newer timestamp and
the second being the older timestamp (this is the sort order defined by
KeyValue.COMPARATOR
). If columns don't exist, they won't be
present in the result. Therefore if you ask for 1 version all columns,
it is safe to iterate over this array and expect to see 1 Cell for
each column and no more.
This API is faster than using getFamilyMap() and getMap()
@Deprecated public KeyValue[] raw()
rawCells()
public List<Cell> listCells()
@Deprecated public List<KeyValue> list()
listCells()
@Deprecated public List<KeyValue> getColumn(byte[] family, byte[] qualifier)
getColumnCells(byte[], byte[])
instead.
public List<Cell> getColumnCells(byte[] family, byte[] qualifier)
KeyValue.COMPARATOR
order. That implies the first entry in
the list is the most recent column. If the query (Scan or Get) only
requested 1 version the list will contain at most 1 entry. If the column
did not exist in the result set (either the column does not exist
or the column was not selected in the query) the list will be empty.
Also see getColumnLatest which returns just a Cell
family
- the familyqualifier
-
protected int binarySearch(Cell[] kvs, byte[] family, byte[] qualifier)
protected int binarySearch(Cell[] kvs, byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
kvs
- the array to searchfamily
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier length
@Deprecated public KeyValue getColumnLatest(byte[] family, byte[] qualifier)
getColumnLatestCell(byte[], byte[])
instead.
public Cell getColumnLatestCell(byte[] family, byte[] qualifier)
family
- qualifier
-
@Deprecated public KeyValue getColumnLatest(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
getColumnLatestCell(byte[], int, int, byte[], int, int)
instead.
public Cell getColumnLatestCell(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
family
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier length
public byte[] getValue(byte[] family, byte[] qualifier)
family
- family namequalifier
- column qualifier
public ByteBuffer getValueAsByteBuffer(byte[] family, byte[] qualifier)
ByteBuffer
.
family
- family namequalifier
- column qualifier
null
if none foundpublic ByteBuffer getValueAsByteBuffer(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
ByteBuffer
.
family
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier length
null
if none foundpublic boolean loadValue(byte[] family, byte[] qualifier, ByteBuffer dst) throws BufferOverflowException
ByteBuffer
.
Does not clear or flip the buffer.
family
- family namequalifier
- column qualifierdst
- the buffer where to write the value
true
if a value was found, false
otherwise
BufferOverflowException
- there is insufficient space remaining in the bufferpublic boolean loadValue(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength, ByteBuffer dst) throws BufferOverflowException
ByteBuffer
.
Does not clear or flip the buffer.
family
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier lengthdst
- the buffer where to write the value
true
if a value was found, false
otherwise
BufferOverflowException
- there is insufficient space remaining in the bufferpublic boolean containsNonEmptyColumn(byte[] family, byte[] qualifier)
family
- family namequalifier
- column qualifier
public boolean containsNonEmptyColumn(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
family
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier length
public boolean containsEmptyColumn(byte[] family, byte[] qualifier)
family
- family namequalifier
- column qualifier
public boolean containsEmptyColumn(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
family
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier length
public boolean containsColumn(byte[] family, byte[] qualifier)
family
- family namequalifier
- column qualifier
public boolean containsColumn(byte[] family, int foffset, int flength, byte[] qualifier, int qoffset, int qlength)
family
- family namefoffset
- family offsetflength
- family lengthqualifier
- column qualifierqoffset
- qualifier offsetqlength
- qualifier length
public NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> getMap()
Returns a three level Map of the form:
Map&family,Map<qualifier,Map<timestamp,value>>>
Note: All other map returning methods make use of this map internally.
public NavigableMap<byte[],NavigableMap<byte[],byte[]>> getNoVersionMap()
Returns a two level Map of the form: Map&family,Map<qualifier,value>>
The most recent version of each qualifier will be used.
public NavigableMap<byte[],byte[]> getFamilyMap(byte[] family)
Returns a Map of the form: Map<qualifier,value>
family
- column family to get
public byte[] value()
public boolean isEmpty()
public int size()
public String toString()
toString
in class Object
public static void compareResults(Result res1, Result res2) throws Exception
res1
- first result to compareres2
- second result to compare
Exception
- Every difference is throwing an exceptionpublic void copyFrom(Result other)
other
- public CellScanner cellScanner()
cellScanner
in interface CellScannable
public Boolean getExists()
public void setExists(Boolean exists)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |