Interface Table
- All Superinterfaces:
AutoCloseable,Closeable
- All Known Implementing Classes:
TableOverAsyncTable,ThriftTable
Connection and
call close() afterwards.
Table can be used to get, put, delete or scan data from a table.
- Since:
- 0.99.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceDeprecated.Since 3.0.0, will be removed in 4.0.0.static interfaceDeprecated.Since 3.0.0, will be removed in 4.0.0. -
Method Summary
Modifier and TypeMethodDescriptiondefault ResultAppends values to one or more columns within a single row.default voidMethod that does a batch call on Deletes, Gets, Puts, Increments, Appends, RowMutations.default <R> voidbatchCallback(List<? extends Row> actions, Object[] results, Batch.Callback<R> callback) Deprecated.since 3.0.0, will removed in 4.0.0.default <R extends org.apache.hbase.thirdparty.com.google.protobuf.Message>
Map<byte[],R> batchCoprocessorService(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor methodDescriptor, org.apache.hbase.thirdparty.com.google.protobuf.Message request, byte[] startKey, byte[] endKey, R responsePrototype) Deprecated.since 3.0.0, will removed in 4.0.0.default <R extends org.apache.hbase.thirdparty.com.google.protobuf.Message>
voidbatchCoprocessorService(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor methodDescriptor, org.apache.hbase.thirdparty.com.google.protobuf.Message request, byte[] startKey, byte[] endKey, R responsePrototype, Batch.Callback<R> callback) Deprecated.since 3.0.0, will removed in 4.0.0.default Table.CheckAndMutateBuildercheckAndMutate(byte[] row, byte[] family) Deprecated.Since 3.0.0, will be removed in 4.0.0.checkAndMutate(byte[] row, Filter filter) Deprecated.Since 3.0.0, will be removed in 4.0.0.default List<CheckAndMutateResult>checkAndMutate(List<CheckAndMutate> checkAndMutates) Batch version of checkAndMutate.default CheckAndMutateResultcheckAndMutate(CheckAndMutate checkAndMutate) checkAndMutate that atomically checks if a row matches the specified condition.default voidclose()Releases any resources held or pending changes in internal buffers.default CoprocessorRpcChannelcoprocessorService(byte[] row) Deprecated.since 3.0.0, will removed in 4.0.0.default <T extends org.apache.hbase.thirdparty.com.google.protobuf.Service,R>
Map<byte[],R> coprocessorService(Class<T> service, byte[] startKey, byte[] endKey, Batch.Call<T, R> callable) Deprecated.since 3.0.0, will removed in 4.0.0.default <T extends org.apache.hbase.thirdparty.com.google.protobuf.Service,R>
voidcoprocessorService(Class<T> service, byte[] startKey, byte[] endKey, Batch.Call<T, R> callable, Batch.Callback<R> callback) Deprecated.since 3.0.0, will removed in 4.0.0.default voidBatch Deletes the specified cells/rows from the table.default voidDeletes the specified cells/row.default boolean[]Test for the existence of columns in the table, as specified by the Gets.default booleanTest for the existence of columns in the table, as specified by the Get.default Result[]Extracts specified cells from the given rows, as a batch.default ResultExtracts certain cells from a given row.org.apache.hadoop.conf.ConfigurationReturns theConfigurationobject used by this instance.Gets thetable descriptorfor this table.getName()Gets the fully qualified table name instance of this table.default longgetOperationTimeout(TimeUnit unit) Get timeout of each operation in Table instance.default longgetReadRpcTimeout(TimeUnit unit) Get timeout of each rpc read request in this Table instance.Gets theRegionLocatorfor this table.Get the attributes to be submitted with requestsdefault longgetRpcTimeout(TimeUnit unit) Get timeout of each rpc request in this Table instance.default ResultScannergetScanner(byte[] family) Gets a scanner on the current table for the given family.default ResultScannergetScanner(byte[] family, byte[] qualifier) Gets a scanner on the current table for the given family and qualifier.default ResultScannergetScanner(Scan scan) Returns a scanner on the current table as specified by theScanobject.default longgetWriteRpcTimeout(TimeUnit unit) Get timeout of each rpc write request in this Table instance.default ResultIncrements one or more columns within a single row.default longincrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount) default longincrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount, Durability durability) Atomically increments a column value.default ResultPerforms multiple mutations atomically on a single row.default voidBatch puts the specified data into the table.default voidPuts some data in the table.
-
Method Details
-
getName
Gets the fully qualified table name instance of this table. -
getConfiguration
org.apache.hadoop.conf.Configuration getConfiguration()Returns theConfigurationobject used by this instance.The reference returned is not a copy, so any change made to it will affect this instance.
-
getDescriptor
Gets thetable descriptorfor this table.- Throws:
IOException- if a remote or network exception occurs.
-
getRegionLocator
Gets theRegionLocatorfor this table.- Throws:
IOException
-
exists
Test for the existence of columns in the table, as specified by the Get.This will return true if the Get matches one or more keys, false if not.
This is a server-side call so it prevents any data from being transfered to the client.
- Parameters:
get- the Get- Returns:
- true if the specified Get matches one or more keys, false if not
- Throws:
IOException- e
-
exists
Test for the existence of columns in the table, as specified by the Gets.This will return an array of booleans. Each value will be true if the related Get matches one or more keys, false if not.
This is a server-side call so it prevents any data from being transferred to the client.
- Parameters:
gets- the Gets- Returns:
- Array of boolean. True if the specified Get matches one or more keys, false if not.
- Throws:
IOException- e
-
batch
default void batch(List<? extends Row> actions, Object[] results) throws IOException, InterruptedException Method that does a batch call on Deletes, Gets, Puts, Increments, Appends, RowMutations. The ordering of execution of the actions is not defined. Meaning if you do a Put and a Get in the samebatch(java.util.List<? extends org.apache.hadoop.hbase.client.Row>, java.lang.Object[])call, you will not necessarily be guaranteed that the Get returns what the Put had put.- Parameters:
actions- list of Get, Put, Delete, Increment, Append, RowMutations.results- Empty Object[], same size as actions. Provides access to partial results, in case an exception is thrown. A null in the result array means that the call for that action failed, even after retries. The order of the objects in the results array corresponds to the order of actions in the request list.- Throws:
IOExceptionInterruptedException- Since:
- 0.90.0
-
batchCallback
@Deprecated default <R> void batchCallback(List<? extends Row> actions, Object[] results, Batch.Callback<R> callback) throws IOException, InterruptedException Deprecated.since 3.0.0, will removed in 4.0.0. Please use the batch related methods inAsyncTabledirectly if you want to use callback. We reuse the callback for coprocessor here, and the problem is that for batch operation, theAsyncTabledoes not tell us the region, so in this method we need an extra locating after we get the result, which is not good.Same asbatch(List, Object[]), but with a callback.- Throws:
IOExceptionInterruptedException- Since:
- 0.96.0
-
get
Extracts certain cells from a given row.- Parameters:
get- The object that specifies what data to fetch and from which row.- Returns:
- The data coming from the specified row, if it exists. If the row specified doesn't
exist, the
Resultinstance returned won't contain anyKeyValue, as indicated byResult.isEmpty(). - Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
get
Extracts specified cells from the given rows, as a batch.- Parameters:
gets- The objects that specify what data to fetch and from which rows.- Returns:
- The data coming from the specified rows, if it exists. If the row specified doesn't
exist, the
Resultinstance returned won't contain anyCells, as indicated byResult.isEmpty(). If there are any failures even after retries, there will be anullin the results' array for those Gets, AND an exception will be thrown. The ordering of the Result array corresponds to the order of the list of passed in Gets. - Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.90.0
- API Note:
put(List)runs pre-flight validations on the input list on client. Currentlyget(List)doesn't run any validations on the client-side, currently there is no need, but this may change in the future. AnIllegalArgumentExceptionwill be thrown in this case.
-
getScanner
Returns a scanner on the current table as specified by theScanobject. Note that the passedScan's start row and caching properties maybe changed.- Parameters:
scan- A configuredScanobject.- Returns:
- A scanner.
- Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
getScanner
Gets a scanner on the current table for the given family.- Parameters:
family- The column family to scan.- Returns:
- A scanner.
- Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
getScanner
Gets a scanner on the current table for the given family and qualifier.- Parameters:
family- The column family to scan.qualifier- The column qualifier to scan.- Returns:
- A scanner.
- Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
put
Puts some data in the table.- Parameters:
put- The data to put.- Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
put
Batch puts the specified data into the table.This can be used for group commit, or for submitting user defined batches. Before sending a batch of mutations to the server, the client runs a few validations on the input list. If an error is found, for example, a mutation was supplied but was missing it's column an
IllegalArgumentExceptionwill be thrown and no mutations will be applied. If there are any failures even after retries, aRetriesExhaustedWithDetailsExceptionwill be thrown. RetriesExhaustedWithDetailsException contains lists of failed mutations and corresponding remote exceptions. The ordering of mutations and exceptions in the encapsulating exception corresponds to the order of the input list of Put requests.- Parameters:
puts- The list of mutations to apply.- Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
delete
Deletes the specified cells/row.- Parameters:
delete- The object that specifies what to delete.- Throws:
IOException- if a remote or network exception occurs.- Since:
- 0.20.0
-
delete
Batch Deletes the specified cells/rows from the table.If a specified row does not exist,
Deletewill report as though sucessful delete; no exception will be thrown. If there are any failures even after retries, aRetriesExhaustedWithDetailsExceptionwill be thrown. RetriesExhaustedWithDetailsException contains lists of failedDeletes and corresponding remote exceptions.- Parameters:
deletes- List of things to delete. The input list gets modified by this method. All successfully appliedDeletes in the list are removed (in particular it gets re-ordered, so the order in which the elements are inserted in the list gives no guarantee as to the order in which theDeletes are executed).- Throws:
IOException- if a remote or network exception occurs. In that case thedeletesargument will contain theDeleteinstances that have not be successfully applied.- Since:
- 0.20.1
- API Note:
- In 3.0.0 version, the input list
deleteswill no longer be modified. Also,put(List)runs pre-flight validations on the input list on client. Currentlydelete(List)doesn't run validations on the client, there is no need currently, but this may change in the future. AnIllegalArgumentExceptionwill be thrown in this case.
-
checkAndMutate
Deprecated.Since 3.0.0, will be removed in 4.0.0. For internal test use only, do not use it any more.Atomically checks if a row/family/qualifier value matches the expected value. If it does, it adds the Put/Delete/RowMutations.Use the returned
Table.CheckAndMutateBuilderto construct your request and then execute it. This is a fluent style API, the code is like:table.checkAndMutate(row, family).qualifier(qualifier).ifNotExists().thenPut(put); -
checkAndMutate
Deprecated.Since 3.0.0, will be removed in 4.0.0. For internal test use only, do not use it any more.Atomically checks if a row matches the specified filter. If it does, it adds the Put/Delete/RowMutations.Use the returned
Table.CheckAndMutateWithFilterBuilderto construct your request and then execute it. This is a fluent style API, the code is like:table.checkAndMutate(row, filter).thenPut(put); -
checkAndMutate
checkAndMutate that atomically checks if a row matches the specified condition. If it does, it performs the specified action.- Parameters:
checkAndMutate- The CheckAndMutate object.- Returns:
- A CheckAndMutateResult object that represents the result for the CheckAndMutate.
- Throws:
IOException- if a remote or network exception occurs.
-
checkAndMutate
default List<CheckAndMutateResult> checkAndMutate(List<CheckAndMutate> checkAndMutates) throws IOException Batch version of checkAndMutate. The specified CheckAndMutates are batched only in the sense that they are sent to a RS in one RPC, but each CheckAndMutate operation is still executed atomically (and thus, each may fail independently of others).- Parameters:
checkAndMutates- The list of CheckAndMutate.- Returns:
- A list of CheckAndMutateResult objects that represents the result for each CheckAndMutate.
- Throws:
IOException- if a remote or network exception occurs.
-
mutateRow
- Parameters:
rm- object that specifies the set of mutations to perform atomically- Returns:
- results of Increment/Append operations
- Throws:
IOException- if a remote or network exception occurs.
-
append
Appends values to one or more columns within a single row.This operation guaranteed atomicity to readers. Appends are done under a single row lock, so write operations to a row are synchronized, and readers are guaranteed to see this operation fully completed.
- Parameters:
append- object that specifies the columns and values to be appended- Returns:
- values of columns after the append operation (maybe null)
- Throws:
IOException- e
-
increment
Increments one or more columns within a single row.This operation ensures atomicity to readers. Increments are done under a single row lock, so write operations to a row are synchronized, and readers are guaranteed to see this operation fully completed.
- Parameters:
increment- object that specifies the columns and amounts to be used for the increment operations- Returns:
- values of columns after the increment
- Throws:
IOException- e
-
incrementColumnValue
default long incrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount) throws IOException SeeincrementColumnValue(byte[], byte[], byte[], long, Durability)The
Durabilityis defaulted toDurability.SYNC_WAL.- Parameters:
row- The row that contains the cell to increment.family- The column family of the cell to increment.qualifier- The column qualifier of the cell to increment.amount- The amount to increment the cell with (or decrement, if the amount is negative).- Returns:
- The new value, post increment.
- Throws:
IOException- if a remote or network exception occurs.
-
incrementColumnValue
default long incrementColumnValue(byte[] row, byte[] family, byte[] qualifier, long amount, Durability durability) throws IOException Atomically increments a column value. If the column value already exists and is not a big-endian long, this could throw an exception. If the column value does not yet exist it is initialized toamountand written to the specified column.Setting durability to
Durability.SKIP_WALmeans that in a fail scenario you will lose any increments that have not been flushed.- Parameters:
row- The row that contains the cell to increment.family- The column family of the cell to increment.qualifier- The column qualifier of the cell to increment.amount- The amount to increment the cell with (or decrement, if the amount is negative).durability- The persistence guarantee for this increment.- Returns:
- The new value, post increment.
- Throws:
IOException- if a remote or network exception occurs.
-
close
Releases any resources held or pending changes in internal buffers.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException- if a remote or network exception occurs.
-
coprocessorService
Deprecated.since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any more. Use the coprocessorService methods inAsyncTableinstead.Creates and returns aRpcChannelinstance connected to the table region containing the specified row. The row given does not actually have to exist. Whichever region would contain the row based on start and end keys will be used. Note that therowparameter is also not passed to the coprocessor handler registered for this protocol, unless therowis separately passed as an argument in the service request. The parameter here is only used to locate the region used to handle the call. The obtainedRpcChannelinstance can be used to access a published coprocessorServiceusing standard protobuf service invocations:CoprocessorRpcChannel channel = myTable.coprocessorService(rowkey); MyService.BlockingInterface service = MyService.newBlockingStub(channel); MyCallRequest request = MyCallRequest.newBuilder() ... .build(); MyCallResponse response = service.myCall(null, request);- Parameters:
row- The row key used to identify the remote region location- Returns:
- A CoprocessorRpcChannel instance
- See Also:
-
coprocessorService
@Deprecated default <T extends org.apache.hbase.thirdparty.com.google.protobuf.Service,R> Map<byte[],R> coprocessorService(Class<T> service, byte[] startKey, byte[] endKey, Batch.Call<T, R> callable) throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException, ThrowableDeprecated.since 3.0.0, will removed in 4.0.0. The batch call here references the blocking interface for of a protobuf stub, so it is not possible to do it in an asynchronous way, even if now we are building theTableimplementation based on theAsyncTable, which is not good. Use the coprocessorService methods inAsyncTabledirectly instead.Creates an instance of the givenServicesubclass for each table region spanning the range from thestartKeyrow toendKeyrow (inclusive), and invokes the passedBatch.Call.call(T)method with eachServiceinstance.- Type Parameters:
T- theServicesubclass to connect toR- Return type for thecallableparameter'sBatch.Call.call(T)method- Parameters:
service- the protocol bufferServiceimplementation to callstartKey- start region selection with region containing this row. Ifnull, the selection will start with the first table region.endKey- select regions up to and including the region containing this row. Ifnull, selection will continue through the last table region.callable- this instance'sBatch.Call.call(T)method will be invoked once per table region, using theServiceinstance connected to that region.- Returns:
- a map of result values keyed by region name
- Throws:
org.apache.hbase.thirdparty.com.google.protobuf.ServiceExceptionThrowable- See Also:
-
coprocessorService
@Deprecated default <T extends org.apache.hbase.thirdparty.com.google.protobuf.Service,R> void coprocessorService(Class<T> service, byte[] startKey, byte[] endKey, Batch.Call<T, R> callable, Batch.Callback<R> callback) throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException, ThrowableDeprecated.since 3.0.0, will removed in 4.0.0. The batch call here references the blocking interface for of a protobuf stub, so it is not possible to do it in an asynchronous way, even if now we are building theTableimplementation based on theAsyncTable, which is not good. Use the coprocessorService methods inAsyncTabledirectly instead.Creates an instance of the givenServicesubclass for each table region spanning the range from thestartKeyrow toendKeyrow (inclusive), and invokes the passedBatch.Call.call(T)method with eachServiceinstance. The givenBatch.Callback.update(byte[],byte[],Object)method will be called with the return value from each region'sBatch.Call.call(T)invocation.- Type Parameters:
T- theServicesubclass to connect toR- Return type for thecallableparameter'sBatch.Call.call(T)method- Parameters:
service- the protocol bufferServiceimplementation to callstartKey- start region selection with region containing this row. Ifnull, the selection will start with the first table region.endKey- select regions up to and including the region containing this row. Ifnull, selection will continue through the last table region.callable- this instance'sBatch.Call.call(T)method will be invoked once per table region, using theServiceinstance connected to that region.- Throws:
org.apache.hbase.thirdparty.com.google.protobuf.ServiceExceptionThrowable- See Also:
-
batchCoprocessorService
@Deprecated default <R extends org.apache.hbase.thirdparty.com.google.protobuf.Message> Map<byte[],R> batchCoprocessorService(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor methodDescriptor, org.apache.hbase.thirdparty.com.google.protobuf.Message request, byte[] startKey, byte[] endKey, R responsePrototype) throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException, Throwable Deprecated.since 3.0.0, will removed in 4.0.0. The batch call here references the blocking interface for of a protobuf stub, so it is not possible to do it in an asynchronous way, even if now we are building theTableimplementation based on theAsyncTable, which is not good. Use the coprocessorService methods inAsyncTabledirectly instead.Creates an instance of the givenServicesubclass for each table region spanning the range from thestartKeyrow toendKeyrow (inclusive), all the invocations to the same region server will be batched into one call. The coprocessor service is invoked according to the service instance, method name and parameters.- Type Parameters:
R- the response type for the coprocessor Service method- Parameters:
methodDescriptor- the descriptor for the protobuf service method to call.request- the method call parametersstartKey- start region selection with region containing this row. Ifnull, the selection will start with the first table region.endKey- select regions up to and including the region containing this row. Ifnull, selection will continue through the last table region.responsePrototype- the proto type of the response of the method in Service.- Returns:
- a map of result values keyed by region name
- Throws:
org.apache.hbase.thirdparty.com.google.protobuf.ServiceExceptionThrowable- See Also:
-
batchCoprocessorService
@Deprecated default <R extends org.apache.hbase.thirdparty.com.google.protobuf.Message> void batchCoprocessorService(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor methodDescriptor, org.apache.hbase.thirdparty.com.google.protobuf.Message request, byte[] startKey, byte[] endKey, R responsePrototype, Batch.Callback<R> callback) throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException, Throwable Deprecated.since 3.0.0, will removed in 4.0.0. The batch call here references the blocking interface for of a protobuf stub, so it is not possible to do it in an asynchronous way, even if now we are building theTableimplementation based on theAsyncTable, which is not good. Use the coprocessorService methods inAsyncTabledirectly instead.Creates an instance of the givenServicesubclass for each table region spanning the range from thestartKeyrow toendKeyrow (inclusive), all the invocations to the same region server will be batched into one call. The coprocessor service is invoked according to the service instance, method name and parameters. The givenBatch.Callback.update(byte[],byte[],Object)method will be called with the return value from each region's invocation.- Type Parameters:
R- the response type for the coprocessor Service method- Parameters:
methodDescriptor- the descriptor for the protobuf service method to call.request- the method call parametersstartKey- start region selection with region containing this row. Ifnull, the selection will start with the first table region.endKey- select regions up to and including the region containing this row. Ifnull, selection will continue through the last table region.responsePrototype- the proto type of the response of the method in Service.callback- callback to invoke with the response for each region- Throws:
org.apache.hbase.thirdparty.com.google.protobuf.ServiceExceptionThrowable- See Also:
-
getRpcTimeout
Get timeout of each rpc request in this Table instance. It will be overridden by a more specific rpc timeout config such as readRpcTimeout or writeRpcTimeout.- Parameters:
unit- the unit of time the timeout to be represented in- Returns:
- rpc timeout in the specified time unit
- See Also:
-
getReadRpcTimeout
Get timeout of each rpc read request in this Table instance.- Parameters:
unit- the unit of time the timeout to be represented in- Returns:
- read rpc timeout in the specified time unit
-
getWriteRpcTimeout
Get timeout of each rpc write request in this Table instance.- Parameters:
unit- the unit of time the timeout to be represented in- Returns:
- write rpc timeout in the specified time unit
-
getOperationTimeout
Get timeout of each operation in Table instance.- Parameters:
unit- the unit of time the timeout to be represented in- Returns:
- operation rpc timeout in the specified time unit
-
getRequestAttributes
Get the attributes to be submitted with requests- Returns:
- map of request attributes
-