org.apache.hadoop.hbase.thrift
Class ThriftServer.HBaseHandler

java.lang.Object
  extended by org.apache.hadoop.hbase.thrift.ThriftServer.HBaseHandler
All Implemented Interfaces:
Hbase.Iface
Enclosing class:
ThriftServer

public static class ThriftServer.HBaseHandler
extends Object
implements Hbase.Iface

The HBaseHandler is a glue object that connects Thrift RPC calls to the HBase client API primarily defined in the HBaseAdmin and HTable objects.


Field Summary
protected  HBaseAdmin admin
           
protected  HBaseConfiguration conf
           
protected  org.apache.commons.logging.Log LOG
           
protected  int nextScannerId
           
protected  HashMap<Integer,Scanner> scannerMap
           
 
Method Summary
protected  int addScanner(Scanner scanner)
          Assigns a unique ID to the scanner and adds the mapping to an internal hash-map.
 void createTable(byte[] tableName, List<ColumnDescriptor> columnFamilies)
          Create a table with the specified column families.
 void deleteAll(byte[] tableName, byte[] row, byte[] column)
          Delete all cells that match the passed row and column.
 void deleteAllRow(byte[] tableName, byte[] row)
          Completely delete the row's cells.
 void deleteAllRowTs(byte[] tableName, byte[] row, long timestamp)
          Completely delete the row's cells marked with a timestamp equal-to or older than the passed timestamp.
 void deleteAllTs(byte[] tableName, byte[] row, byte[] column, long timestamp)
          Delete all cells that match the passed row and column and whose timestamp is equal-to or older than the passed timestamp.
 void deleteTable(byte[] tableName)
          Deletes a table
 void disableTable(byte[] tableName)
          Disables a table (takes it off-line) If it is being served, the master will tell the servers to stop serving it.
 void enableTable(byte[] tableName)
          Brings a table on-line (enables it)
 TCell get(byte[] tableName, byte[] row, byte[] column)
          Get a single TCell for the specified table, row, and column at the latest timestamp.
 Map<byte[],ColumnDescriptor> getColumnDescriptors(byte[] tableName)
          List all the column families assoicated with a table.
 TRowResult getRow(byte[] tableName, byte[] row)
          Get all the data for the specified table and row at the latest timestamp.
 TRowResult getRowTs(byte[] tableName, byte[] row, long timestamp)
          Get all the data for the specified table and row at the specified timestamp.
protected  Scanner getScanner(int id)
          Returns the scanner associated with the specified ID.
protected  HTable getTable(byte[] tableName)
          Creates and returns an HTable instance from a given table name.
 List<byte[]> getTableNames()
          List all the userspace tables.
 List<TRegionInfo> getTableRegions(byte[] tableName)
          List the regions associated with a table.
 List<TCell> getVer(byte[] tableName, byte[] row, byte[] column, int numVersions)
          Get the specified number of versions for the specified table, row, and column.
 List<TCell> getVerTs(byte[] tableName, byte[] row, byte[] column, long timestamp, int numVersions)
          Get the specified number of versions for the specified table, row, and column.
 boolean isTableEnabled(byte[] tableName)
           
 void mutateRow(byte[] tableName, byte[] row, List<Mutation> mutations)
          Apply a series of mutations (updates/deletes) to a row in a single transaction.
 void mutateRows(byte[] tableName, List<BatchMutation> rowBatches)
          Apply a series of batches (each a series of mutations on a single row) in a single transaction.
 void mutateRowsTs(byte[] tableName, List<BatchMutation> rowBatches, long timestamp)
          Apply a series of batches (each a series of mutations on a single row) in a single transaction.
 void mutateRowTs(byte[] tableName, byte[] row, List<Mutation> mutations, long timestamp)
          Apply a series of mutations (updates/deletes) to a row in a single transaction.
protected  Scanner removeScanner(int id)
          Removes the scanner associated with the specified ID from the internal id->scanner hash-map.
 void scannerClose(int id)
          Closes the server-state associated with an open scanner.
 TRowResult scannerGet(int id)
          Returns the scanner's current row value and advances to the next row in the table.
 int scannerOpen(byte[] tableName, byte[] startRow, List<byte[]> columns)
          Get a scanner on the current table starting at the specified row and ending at the last row in the table.
 int scannerOpenTs(byte[] tableName, byte[] startRow, List<byte[]> columns, long timestamp)
          Get a scanner on the current table starting at the specified row and ending at the last row in the table.
 int scannerOpenWithStop(byte[] tableName, byte[] startRow, byte[] stopRow, List<byte[]> columns)
          Get a scanner on the current table starting and stopping at the specified rows.
 int scannerOpenWithStopTs(byte[] tableName, byte[] startRow, byte[] stopRow, List<byte[]> columns, long timestamp)
          Get a scanner on the current table starting and stopping at the specified rows.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

conf

protected HBaseConfiguration conf

admin

protected HBaseAdmin admin

LOG

protected final org.apache.commons.logging.Log LOG

nextScannerId

protected int nextScannerId

scannerMap

protected HashMap<Integer,Scanner> scannerMap
Method Detail

getTable

protected HTable getTable(byte[] tableName)
                   throws IOError,
                          IOException
Creates and returns an HTable instance from a given table name.

Parameters:
tableName - name of table
Returns:
HTable object
Throws:
IOException
IOError

addScanner

protected int addScanner(Scanner scanner)
Assigns a unique ID to the scanner and adds the mapping to an internal hash-map.

Parameters:
scanner -
Returns:
integer scanner id

getScanner

protected Scanner getScanner(int id)
Returns the scanner associated with the specified ID.

Parameters:
id -
Returns:
a Scanner, or null if ID was invalid.

removeScanner

protected Scanner removeScanner(int id)
Removes the scanner associated with the specified ID from the internal id->scanner hash-map.

Parameters:
id -
Returns:
a Scanner, or null if ID was invalid.

enableTable

public void enableTable(byte[] tableName)
                 throws IOError
Description copied from interface: Hbase.Iface
Brings a table on-line (enables it)

Specified by:
enableTable in interface Hbase.Iface
Parameters:
tableName - name of the table
Throws:
IOError

disableTable

public void disableTable(byte[] tableName)
                  throws IOError
Description copied from interface: Hbase.Iface
Disables a table (takes it off-line) If it is being served, the master will tell the servers to stop serving it.

Specified by:
disableTable in interface Hbase.Iface
Parameters:
tableName - name of the table
Throws:
IOError

isTableEnabled

public boolean isTableEnabled(byte[] tableName)
                       throws IOError
Specified by:
isTableEnabled in interface Hbase.Iface
Parameters:
tableName - name of table to check
Returns:
true if table is on-line
Throws:
IOError

getTableNames

public List<byte[]> getTableNames()
                           throws IOError
Description copied from interface: Hbase.Iface
List all the userspace tables.

Specified by:
getTableNames in interface Hbase.Iface
Returns:
- returns a list of names
Throws:
IOError

getTableRegions

public List<TRegionInfo> getTableRegions(byte[] tableName)
                                  throws IOError
Description copied from interface: Hbase.Iface
List the regions associated with a table.

Specified by:
getTableRegions in interface Hbase.Iface
Parameters:
tableName - table name
Returns:
list of region descriptors
Throws:
IOError

get

public TCell get(byte[] tableName,
                 byte[] row,
                 byte[] column)
          throws NotFound,
                 IOError
Description copied from interface: Hbase.Iface
Get a single TCell for the specified table, row, and column at the latest timestamp.

Specified by:
get in interface Hbase.Iface
Parameters:
tableName - name of table
row - row key
column - column name
Returns:
value for specified row/column
Throws:
NotFound
IOError

getVer

public List<TCell> getVer(byte[] tableName,
                          byte[] row,
                          byte[] column,
                          int numVersions)
                   throws IOError,
                          NotFound
Description copied from interface: Hbase.Iface
Get the specified number of versions for the specified table, row, and column.

Specified by:
getVer in interface Hbase.Iface
Parameters:
tableName - name of table
row - row key
column - column name
numVersions - number of versions to retrieve
Returns:
list of cells for specified row/column
Throws:
IOError
NotFound

getVerTs

public List<TCell> getVerTs(byte[] tableName,
                            byte[] row,
                            byte[] column,
                            long timestamp,
                            int numVersions)
                     throws IOError,
                            NotFound
Description copied from interface: Hbase.Iface
Get the specified number of versions for the specified table, row, and column. Only versions less than or equal to the specified timestamp will be returned.

Specified by:
getVerTs in interface Hbase.Iface
Parameters:
tableName - name of table
row - row key
column - column name
timestamp - timestamp
numVersions - number of versions to retrieve
Returns:
list of cells for specified row/column
Throws:
IOError
NotFound

getRow

public TRowResult getRow(byte[] tableName,
                         byte[] row)
                  throws IOError
Description copied from interface: Hbase.Iface
Get all the data for the specified table and row at the latest timestamp.

Specified by:
getRow in interface Hbase.Iface
Parameters:
tableName - name of table
row - row key
Returns:
TRowResult containing the row and map of columns to TCells. Map is empty if row does not exist.
Throws:
IOError

getRowTs

public TRowResult getRowTs(byte[] tableName,
                           byte[] row,
                           long timestamp)
                    throws IOError
Description copied from interface: Hbase.Iface
Get all the data for the specified table and row at the specified timestamp.

Specified by:
getRowTs in interface Hbase.Iface
Parameters:
tableName - of table
row - row key
timestamp - timestamp
Returns:
TRowResult containing the row and map of columns to TCells. Map is empty if row does not exist.
Throws:
IOError

deleteAll

public void deleteAll(byte[] tableName,
                      byte[] row,
                      byte[] column)
               throws IOError
Description copied from interface: Hbase.Iface
Delete all cells that match the passed row and column.

Specified by:
deleteAll in interface Hbase.Iface
Parameters:
tableName - name of table
row - Row to update
column - name of column whose value is to be deleted
Throws:
IOError

deleteAllTs

public void deleteAllTs(byte[] tableName,
                        byte[] row,
                        byte[] column,
                        long timestamp)
                 throws IOError
Description copied from interface: Hbase.Iface
Delete all cells that match the passed row and column and whose timestamp is equal-to or older than the passed timestamp.

Specified by:
deleteAllTs in interface Hbase.Iface
Parameters:
tableName - name of table
row - Row to update
column - name of column whose value is to be deleted
timestamp - timestamp
Throws:
IOError

deleteAllRow

public void deleteAllRow(byte[] tableName,
                         byte[] row)
                  throws IOError
Description copied from interface: Hbase.Iface
Completely delete the row's cells.

Specified by:
deleteAllRow in interface Hbase.Iface
Parameters:
tableName - name of table
row - key of the row to be completely deleted.
Throws:
IOError

deleteAllRowTs

public void deleteAllRowTs(byte[] tableName,
                           byte[] row,
                           long timestamp)
                    throws IOError
Description copied from interface: Hbase.Iface
Completely delete the row's cells marked with a timestamp equal-to or older than the passed timestamp.

Specified by:
deleteAllRowTs in interface Hbase.Iface
Parameters:
tableName - name of table
row - key of the row to be completely deleted.
timestamp - timestamp
Throws:
IOError

createTable

public void createTable(byte[] tableName,
                        List<ColumnDescriptor> columnFamilies)
                 throws IOError,
                        IllegalArgument,
                        AlreadyExists
Description copied from interface: Hbase.Iface
Create a table with the specified column families. The name field for each ColumnDescriptor must be set and must end in a colon (:). All other fields are optional and will get default values if not explicitly specified.

Specified by:
createTable in interface Hbase.Iface
Parameters:
tableName - name of table to create
columnFamilies - list of column family descriptors
Throws:
IllegalArgument - if an input parameter is invalid
AlreadyExists - if the table name already exists
IOError

deleteTable

public void deleteTable(byte[] tableName)
                 throws IOError,
                        NotFound
Description copied from interface: Hbase.Iface
Deletes a table

Specified by:
deleteTable in interface Hbase.Iface
Parameters:
tableName - name of table to delete
Throws:
NotFound - if table doesn't exist on server
IOError

mutateRow

public void mutateRow(byte[] tableName,
                      byte[] row,
                      List<Mutation> mutations)
               throws IOError,
                      IllegalArgument
Description copied from interface: Hbase.Iface
Apply a series of mutations (updates/deletes) to a row in a single transaction. If an exception is thrown, then the transaction is aborted. Default current timestamp is used, and all entries will have an identical timestamp.

Specified by:
mutateRow in interface Hbase.Iface
Parameters:
tableName - name of table
row - row key
mutations - list of mutation commands
Throws:
IOError
IllegalArgument

mutateRowTs

public void mutateRowTs(byte[] tableName,
                        byte[] row,
                        List<Mutation> mutations,
                        long timestamp)
                 throws IOError,
                        IllegalArgument
Description copied from interface: Hbase.Iface
Apply a series of mutations (updates/deletes) to a row in a single transaction. If an exception is thrown, then the transaction is aborted. The specified timestamp is used, and all entries will have an identical timestamp.

Specified by:
mutateRowTs in interface Hbase.Iface
Parameters:
tableName - name of table
row - row key
mutations - list of mutation commands
timestamp - timestamp
Throws:
IOError
IllegalArgument

mutateRows

public void mutateRows(byte[] tableName,
                       List<BatchMutation> rowBatches)
                throws IOError,
                       IllegalArgument,
                       com.facebook.thrift.TException
Description copied from interface: Hbase.Iface
Apply a series of batches (each a series of mutations on a single row) in a single transaction. If an exception is thrown, then the transaction is aborted. Default current timestamp is used, and all entries will have an identical timestamp.

Specified by:
mutateRows in interface Hbase.Iface
Parameters:
tableName - name of table
rowBatches - list of row batches
Throws:
IOError
IllegalArgument
com.facebook.thrift.TException

mutateRowsTs

public void mutateRowsTs(byte[] tableName,
                         List<BatchMutation> rowBatches,
                         long timestamp)
                  throws IOError,
                         IllegalArgument,
                         com.facebook.thrift.TException
Description copied from interface: Hbase.Iface
Apply a series of batches (each a series of mutations on a single row) in a single transaction. If an exception is thrown, then the transaction is aborted. The specified timestamp is used, and all entries will have an identical timestamp.

Specified by:
mutateRowsTs in interface Hbase.Iface
Parameters:
tableName - name of table
rowBatches - list of row batches
timestamp - timestamp
Throws:
IOError
IllegalArgument
com.facebook.thrift.TException

scannerClose

public void scannerClose(int id)
                  throws IOError,
                         IllegalArgument
Description copied from interface: Hbase.Iface
Closes the server-state associated with an open scanner.

Specified by:
scannerClose in interface Hbase.Iface
Parameters:
id - id of a scanner returned by scannerOpen
Throws:
IllegalArgument - if ScannerID is invalid
IOError

scannerGet

public TRowResult scannerGet(int id)
                      throws IllegalArgument,
                             NotFound,
                             IOError
Description copied from interface: Hbase.Iface
Returns the scanner's current row value and advances to the next row in the table. When there are no more rows in the table, or a key greater-than-or-equal-to the scanner's specified stopRow is reached, a NotFound exception is returned.

Specified by:
scannerGet in interface Hbase.Iface
Parameters:
id - id of a scanner returned by scannerOpen
Returns:
a TRowResult containing the current row and a map of the columns to TCells.
Throws:
IllegalArgument - if ScannerID is invalid
NotFound - when the scanner reaches the end
IOError

scannerOpen

public int scannerOpen(byte[] tableName,
                       byte[] startRow,
                       List<byte[]> columns)
                throws IOError
Description copied from interface: Hbase.Iface
Get a scanner on the current table starting at the specified row and ending at the last row in the table. Return the specified columns.

Specified by:
scannerOpen in interface Hbase.Iface
Parameters:
tableName - name of table
startRow - starting row in table to scan. send "" (empty string) to start at the first row.
columns - columns to scan. If column name is a column family, all columns of the specified column family are returned. Its also possible to pass a regex in the column qualifier.
Returns:
scanner id to be used with other scanner procedures
Throws:
IOError

scannerOpenWithStop

public int scannerOpenWithStop(byte[] tableName,
                               byte[] startRow,
                               byte[] stopRow,
                               List<byte[]> columns)
                        throws IOError,
                               com.facebook.thrift.TException
Description copied from interface: Hbase.Iface
Get a scanner on the current table starting and stopping at the specified rows. ending at the last row in the table. Return the specified columns.

Specified by:
scannerOpenWithStop in interface Hbase.Iface
Parameters:
tableName - name of table
startRow - starting row in table to scan. send "" (empty string) to start at the first row.
stopRow - row to stop scanning on. This row is *not* included in the scanner's results
columns - columns to scan. If column name is a column family, all columns of the specified column family are returned. Its also possible to pass a regex in the column qualifier.
Returns:
scanner id to be used with other scanner procedures
Throws:
IOError
com.facebook.thrift.TException

scannerOpenTs

public int scannerOpenTs(byte[] tableName,
                         byte[] startRow,
                         List<byte[]> columns,
                         long timestamp)
                  throws IOError,
                         com.facebook.thrift.TException
Description copied from interface: Hbase.Iface
Get a scanner on the current table starting at the specified row and ending at the last row in the table. Return the specified columns. Only values with the specified timestamp are returned.

Specified by:
scannerOpenTs in interface Hbase.Iface
Parameters:
tableName - name of table
startRow - starting row in table to scan. send "" (empty string) to start at the first row.
columns - columns to scan. If column name is a column family, all columns of the specified column family are returned. Its also possible to pass a regex in the column qualifier.
timestamp - timestamp
Returns:
scanner id to be used with other scanner procedures
Throws:
IOError
com.facebook.thrift.TException

scannerOpenWithStopTs

public int scannerOpenWithStopTs(byte[] tableName,
                                 byte[] startRow,
                                 byte[] stopRow,
                                 List<byte[]> columns,
                                 long timestamp)
                          throws IOError,
                                 com.facebook.thrift.TException
Description copied from interface: Hbase.Iface
Get a scanner on the current table starting and stopping at the specified rows. ending at the last row in the table. Return the specified columns. Only values with the specified timestamp are returned.

Specified by:
scannerOpenWithStopTs in interface Hbase.Iface
Parameters:
tableName - name of table
startRow - starting row in table to scan. send "" (empty string) to start at the first row.
stopRow - row to stop scanning on. This row is *not* included in the scanner's results
columns - columns to scan. If column name is a column family, all columns of the specified column family are returned. Its also possible to pass a regex in the column qualifier.
timestamp - timestamp
Returns:
scanner id to be used with other scanner procedures
Throws:
IOError
com.facebook.thrift.TException

getColumnDescriptors

public Map<byte[],ColumnDescriptor> getColumnDescriptors(byte[] tableName)
                                                  throws IOError,
                                                         com.facebook.thrift.TException
Description copied from interface: Hbase.Iface
List all the column families assoicated with a table.

Specified by:
getColumnDescriptors in interface Hbase.Iface
Parameters:
tableName - table name
Returns:
list of column family descriptors
Throws:
IOError
com.facebook.thrift.TException


Copyright © 2008 The Apache Software Foundation