org.apache.accumulo.core.client.admin
Class TableOperationsImpl

java.lang.Object
  extended by org.apache.accumulo.core.client.admin.TableOperationsHelper
      extended by org.apache.accumulo.core.client.admin.TableOperationsImpl
All Implemented Interfaces:
TableOperations

public class TableOperationsImpl
extends TableOperationsHelper

Provides a class for administering tables


Constructor Summary
TableOperationsImpl(Instance instance, TCredentials credentials)
           
 
Method Summary
 int addConstraint(String tableName, String constraintClassName)
          Add a new constraint to a table.
 void addSplits(String tableName, SortedSet<org.apache.hadoop.io.Text> partitionKeys)
           
 void attachIterator(String tableName, IteratorSetting setting, EnumSet<IteratorUtil.IteratorScope> scopes)
          Add an iterator to a table on the given scopes.
 void cancelCompaction(String tableName)
          Cancels a user initiated major compaction of a table initiated with TableOperations.compact(String, Text, Text, boolean, boolean) or TableOperations.compact(String, Text, Text, List, boolean, boolean).
 void clearLocatorCache(String tableName)
          Clears the tablet locator cache for a specified table
 void clone(String srcTableName, String newTableName, boolean flush, Map<String,String> propertiesToSet, Set<String> propertiesToExclude)
          Clone a table from an existing table.
 void compact(String tableName, org.apache.hadoop.io.Text start, org.apache.hadoop.io.Text end, boolean flush, boolean wait)
          Starts a full major compaction of the tablets in the range (start, end].
 void compact(String tableName, org.apache.hadoop.io.Text start, org.apache.hadoop.io.Text end, List<IteratorSetting> iterators, boolean flush, boolean wait)
          Starts a full major compaction of the tablets in the range (start, end].
 void create(String tableName)
          Create a table with no special configuration
 void create(String tableName, boolean limitVersion)
           
 void create(String tableName, boolean limitVersion, TimeType timeType)
           
 void delete(String tableName)
          Delete a table
 void deleteRows(String tableName, org.apache.hadoop.io.Text start, org.apache.hadoop.io.Text end)
          Delete rows between (start, end]
 boolean exists(String tableName)
          A method to check if a table exists in Accumulo.
 void exportTable(String tableName, String exportDir)
          Exports a table.
 void flush(String tableName)
          Deprecated. since 1.4 flush(String, Text, Text, boolean)
 void flush(String tableName, org.apache.hadoop.io.Text start, org.apache.hadoop.io.Text end, boolean wait)
          Flush a table
static Map<String,String> getExportedProps(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path path)
           
 Map<String,Set<org.apache.hadoop.io.Text>> getLocalityGroups(String tableName)
          Gets the locality groups currently set for a table.
 org.apache.hadoop.io.Text getMaxRow(String tableName, Authorizations auths, org.apache.hadoop.io.Text startRow, boolean startInclusive, org.apache.hadoop.io.Text endRow, boolean endInclusive)
          Finds the max row within a given range.
 Iterable<Map.Entry<String,String>> getProperties(String tableName)
          Gets properties of a table
 Collection<org.apache.hadoop.io.Text> getSplits(String tableName)
           
 Collection<org.apache.hadoop.io.Text> getSplits(String tableName, int maxSplits)
           
 void importDirectory(String tableName, String dir, String failureDir, boolean setTime)
          Bulk import all the files in a directory into a table.
 void importTable(String tableName, String importDir)
          Imports a table exported via exportTable and copied via hadoop distcp.
 SortedSet<String> list()
          Retrieve a list of tables in Accumulo.
 Collection<org.apache.hadoop.io.Text> listSplits(String tableName)
           
 Collection<org.apache.hadoop.io.Text> listSplits(String tableName, int maxSplits)
           
 void merge(String tableName, org.apache.hadoop.io.Text start, org.apache.hadoop.io.Text end)
          Merge tablets between (start, end]
 void offline(String tableName)
           
 void online(String tableName)
           
 void removeProperty(String tableName, String property)
          Removes a property from a table
 void rename(String oldTableName, String newTableName)
          Rename a table
 void setLocalityGroups(String tableName, Map<String,Set<org.apache.hadoop.io.Text>> groups)
          Sets a tables locality groups.
 void setProperty(String tableName, String property, String value)
          Sets a property on a table
 Set<Range> splitRangeByTablets(String tableName, Range range, int maxSplits)
           
 Map<String,String> tableIdMap()
          Get a mapping of table name to internal table id.
 boolean testClassLoad(String tableName, String className, String asTypeName)
          Test to see if the instance can load the given class as the given type.
 
Methods inherited from class org.apache.accumulo.core.client.admin.TableOperationsHelper
attachIterator, checkIteratorConflicts, getIteratorSetting, listConstraints, listIterators, removeConstraint, removeIterator
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TableOperationsImpl

public TableOperationsImpl(Instance instance,
                           TCredentials credentials)
Parameters:
instance - the connection information for this instance
credentials - the username/password for this connection
Method Detail

list

public SortedSet<String> list()
Retrieve a list of tables in Accumulo.

Returns:
List of tables in accumulo

exists

public boolean exists(String tableName)
A method to check if a table exists in Accumulo.

Parameters:
tableName - the name of the table
Returns:
true if the table exists

create

public void create(String tableName)
            throws AccumuloException,
                   AccumuloSecurityException,
                   TableExistsException
Create a table with no special configuration

Parameters:
tableName - the name of the table
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableExistsException - if the table already exists

create

public void create(String tableName,
                   boolean limitVersion)
            throws AccumuloException,
                   AccumuloSecurityException,
                   TableExistsException
Parameters:
tableName - the name of the table
limitVersion - Enables/disables the versioning iterator, which will limit the number of Key versions kept.
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableExistsException - if the table already exists

create

public void create(String tableName,
                   boolean limitVersion,
                   TimeType timeType)
            throws AccumuloException,
                   AccumuloSecurityException,
                   TableExistsException
Parameters:
tableName - the name of the table
timeType - specifies logical or real-time based time recording for entries in the table
limitVersion - Enables/disables the versioning iterator, which will limit the number of Key versions kept.
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableExistsException - if the table already exists

addSplits

public void addSplits(String tableName,
                      SortedSet<org.apache.hadoop.io.Text> partitionKeys)
               throws TableNotFoundException,
                      AccumuloException,
                      AccumuloSecurityException
Parameters:
tableName - the name of the table
partitionKeys - a sorted set of row key values to pre-split the table on
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableNotFoundException - if the table does not exist

merge

public void merge(String tableName,
                  org.apache.hadoop.io.Text start,
                  org.apache.hadoop.io.Text end)
           throws AccumuloException,
                  AccumuloSecurityException,
                  TableNotFoundException
Description copied from interface: TableOperations
Merge tablets between (start, end]

Parameters:
tableName - the table to merge
start - first tablet to be merged contains the row after this row, null means the first tablet
end - last tablet to be merged contains this row, null means the last tablet
Throws:
AccumuloException
AccumuloSecurityException
TableNotFoundException

deleteRows

public void deleteRows(String tableName,
                       org.apache.hadoop.io.Text start,
                       org.apache.hadoop.io.Text end)
                throws AccumuloException,
                       AccumuloSecurityException,
                       TableNotFoundException
Description copied from interface: TableOperations
Delete rows between (start, end]

Parameters:
tableName - the table to merge
start - delete rows after this, null means the first row of the table
end - last row to be deleted, inclusive, null means the last row of the table
Throws:
AccumuloException
AccumuloSecurityException
TableNotFoundException

listSplits

public Collection<org.apache.hadoop.io.Text> listSplits(String tableName)
                                                 throws TableNotFoundException,
                                                        AccumuloSecurityException
Parameters:
tableName - the name of the table
Returns:
the split points (end-row names) for the table's current split profile
Throws:
TableNotFoundException - if the table does not exist
AccumuloSecurityException - if the user does not have permission

getSplits

public Collection<org.apache.hadoop.io.Text> getSplits(String tableName)
                                                throws TableNotFoundException
Parameters:
tableName - the name of the table
Returns:
the split points (end-row names) for the table's current split profile
Throws:
TableNotFoundException - if the table does not exist

listSplits

public Collection<org.apache.hadoop.io.Text> listSplits(String tableName,
                                                        int maxSplits)
                                                 throws TableNotFoundException,
                                                        AccumuloSecurityException
Parameters:
tableName - the name of the table
maxSplits - specifies the maximum number of splits to return
Returns:
the split points (end-row names) for the table's current split profile, grouped into fewer splits so as not to exceed maxSplits
Throws:
TableNotFoundException
AccumuloSecurityException - if the user does not have permission

getSplits

public Collection<org.apache.hadoop.io.Text> getSplits(String tableName,
                                                       int maxSplits)
                                                throws TableNotFoundException
Parameters:
tableName - the name of the table
maxSplits - specifies the maximum number of splits to return
Returns:
the split points (end-row names) for the table's current split profile, grouped into fewer splits so as not to exceed maxSplits
Throws:
TableNotFoundException

delete

public void delete(String tableName)
            throws AccumuloException,
                   AccumuloSecurityException,
                   TableNotFoundException
Delete a table

Parameters:
tableName - the name of the table
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableNotFoundException - if the table does not exist

clone

public void clone(String srcTableName,
                  String newTableName,
                  boolean flush,
                  Map<String,String> propertiesToSet,
                  Set<String> propertiesToExclude)
           throws AccumuloSecurityException,
                  TableNotFoundException,
                  AccumuloException,
                  TableExistsException
Description copied from interface: TableOperations
Clone a table from an existing table. The cloned table will have the same data as the source table it was created from. After cloning, the two tables can mutate independently. Initially the cloned table should not use any extra space, however as the source table and cloned table major compact extra space will be used by the clone. Initially the cloned table is only readable and writable by the user who created it.

Parameters:
srcTableName - the table to clone
newTableName - the name of the clone
flush - determines if memory is flushed in the source table before cloning.
propertiesToSet - the sources tables properties are copied, this allows overriding of those properties
propertiesToExclude - do not copy these properties from the source table, just revert to system defaults
Throws:
AccumuloSecurityException
TableNotFoundException
AccumuloException
TableExistsException

rename

public void rename(String oldTableName,
                   String newTableName)
            throws AccumuloSecurityException,
                   TableNotFoundException,
                   AccumuloException,
                   TableExistsException
Rename a table

Parameters:
oldTableName - the old table name
newTableName - the new table name
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableNotFoundException - if the old table name does not exist
TableExistsException - if the new table name already exists

flush

@Deprecated
public void flush(String tableName)
           throws AccumuloException,
                  AccumuloSecurityException
Deprecated. since 1.4 flush(String, Text, Text, boolean)

Description copied from interface: TableOperations
Initiate a flush of a table's data that is in memory

Parameters:
tableName - the name of the table
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission

flush

public void flush(String tableName,
                  org.apache.hadoop.io.Text start,
                  org.apache.hadoop.io.Text end,
                  boolean wait)
           throws AccumuloException,
                  AccumuloSecurityException,
                  TableNotFoundException
Flush a table

Parameters:
tableName - the name of the table
wait - if true the call will not return until all data present in memory when the call was is flushed if false will initiate a flush of data in memory, but will not wait for it to complete
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableNotFoundException

compact

public void compact(String tableName,
                    org.apache.hadoop.io.Text start,
                    org.apache.hadoop.io.Text end,
                    boolean flush,
                    boolean wait)
             throws AccumuloSecurityException,
                    TableNotFoundException,
                    AccumuloException
Description copied from interface: TableOperations
Starts a full major compaction of the tablets in the range (start, end]. The compaction is preformed even for tablets that have only one file.

Parameters:
tableName - the table to compact
start - first tablet to be compacted contains the row after this row, null means the first tablet in table
end - last tablet to be merged contains this row, null means the last tablet in table
flush - when true, table memory is flushed before compaction starts
wait - when true, the call will not return until compactions are finished
Throws:
AccumuloSecurityException
TableNotFoundException
AccumuloException

compact

public void compact(String tableName,
                    org.apache.hadoop.io.Text start,
                    org.apache.hadoop.io.Text end,
                    List<IteratorSetting> iterators,
                    boolean flush,
                    boolean wait)
             throws AccumuloSecurityException,
                    TableNotFoundException,
                    AccumuloException
Description copied from interface: TableOperations
Starts a full major compaction of the tablets in the range (start, end]. The compaction is preformed even for tablets that have only one file.

Parameters:
tableName - the table to compact
start - first tablet to be compacted contains the row after this row, null means the first tablet in table
end - last tablet to be merged contains this row, null means the last tablet in table
iterators - A set of iterators that will be applied to each tablet compacted
flush - when true, table memory is flushed before compaction starts
wait - when true, the call will not return until compactions are finished
Throws:
AccumuloSecurityException
TableNotFoundException
AccumuloException

cancelCompaction

public void cancelCompaction(String tableName)
                      throws AccumuloSecurityException,
                             TableNotFoundException,
                             AccumuloException
Description copied from interface: TableOperations
Cancels a user initiated major compaction of a table initiated with TableOperations.compact(String, Text, Text, boolean, boolean) or TableOperations.compact(String, Text, Text, List, boolean, boolean). Compactions of tablets that are currently running may finish, but new compactions of tablets will not start.

Parameters:
tableName - the name of the table
Throws:
AccumuloSecurityException - if the user does not have permission
TableNotFoundException - if the table does not exist
AccumuloException - if a general error occurs

setProperty

public void setProperty(String tableName,
                        String property,
                        String value)
                 throws AccumuloException,
                        AccumuloSecurityException
Sets a property on a table

Parameters:
tableName - the name of the table
property - the name of a per-table property
value - the value to set a per-table property to
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission

removeProperty

public void removeProperty(String tableName,
                           String property)
                    throws AccumuloException,
                           AccumuloSecurityException
Removes a property from a table

Parameters:
tableName - the name of the table
property - the name of a per-table property
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission

getProperties

public Iterable<Map.Entry<String,String>> getProperties(String tableName)
                                                 throws AccumuloException,
                                                        TableNotFoundException
Gets properties of a table

Parameters:
tableName - the name of the table
Returns:
all properties visible by this table (system and per-table properties)
Throws:
TableNotFoundException - if the table does not exist
AccumuloException

setLocalityGroups

public void setLocalityGroups(String tableName,
                              Map<String,Set<org.apache.hadoop.io.Text>> groups)
                       throws AccumuloException,
                              AccumuloSecurityException,
                              TableNotFoundException
Sets a tables locality groups. A tables locality groups can be changed at any time.

Parameters:
tableName - the name of the table
groups - mapping of locality group names to column families in the locality group
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableNotFoundException - if the table does not exist

getLocalityGroups

public Map<String,Set<org.apache.hadoop.io.Text>> getLocalityGroups(String tableName)
                                                             throws AccumuloException,
                                                                    TableNotFoundException
Gets the locality groups currently set for a table.

Parameters:
tableName - the name of the table
Returns:
mapping of locality group names to column families in the locality group
Throws:
AccumuloException - if a general error occurs
TableNotFoundException - if the table does not exist

splitRangeByTablets

public Set<Range> splitRangeByTablets(String tableName,
                                      Range range,
                                      int maxSplits)
                               throws AccumuloException,
                                      AccumuloSecurityException,
                                      TableNotFoundException
Parameters:
tableName - the name of the table
range - a range to split
maxSplits - the maximum number of splits
Returns:
the range, split into smaller ranges that fall on boundaries of the table's split points as evenly as possible
Throws:
AccumuloException - if a general error occurs
AccumuloSecurityException - if the user does not have permission
TableNotFoundException - if the table does not exist

importDirectory

public void importDirectory(String tableName,
                            String dir,
                            String failureDir,
                            boolean setTime)
                     throws IOException,
                            AccumuloSecurityException,
                            TableNotFoundException,
                            AccumuloException
Description copied from interface: TableOperations
Bulk import all the files in a directory into a table.

Parameters:
tableName - the name of the table
dir - the HDFS directory to find files for importing
failureDir - the HDFS directory to place files that failed to be imported, must exist and be empty
setTime - override the time values in the input files, and use the current time for all mutations
Throws:
IOException - when there is an error reading/writing to HDFS
AccumuloSecurityException - when the user does not have the proper permissions
TableNotFoundException - when the table no longer exists
AccumuloException - when there is a general accumulo error

offline

public void offline(String tableName)
             throws AccumuloSecurityException,
                    AccumuloException,
                    TableNotFoundException
Parameters:
tableName - the table to take offline
Throws:
AccumuloException - when there is a general accumulo error
AccumuloSecurityException - when the user does not have the proper permissions
TableNotFoundException

online

public void online(String tableName)
            throws AccumuloSecurityException,
                   AccumuloException,
                   TableNotFoundException
Parameters:
tableName - the table to take online
Throws:
AccumuloException - when there is a general accumulo error
AccumuloSecurityException - when the user does not have the proper permissions
TableNotFoundException

clearLocatorCache

public void clearLocatorCache(String tableName)
                       throws TableNotFoundException
Clears the tablet locator cache for a specified table

Parameters:
tableName - the name of the table
Throws:
TableNotFoundException - if table does not exist

tableIdMap

public Map<String,String> tableIdMap()
Get a mapping of table name to internal table id.

Returns:
the map from table name to internal table id

getMaxRow

public org.apache.hadoop.io.Text getMaxRow(String tableName,
                                           Authorizations auths,
                                           org.apache.hadoop.io.Text startRow,
                                           boolean startInclusive,
                                           org.apache.hadoop.io.Text endRow,
                                           boolean endInclusive)
                                    throws TableNotFoundException,
                                           AccumuloException,
                                           AccumuloSecurityException
Description copied from interface: TableOperations
Finds the max row within a given range. To find the max row in a table, pass null for start and end row.

auths - find the max row that can seen with these auths
startRow - row to start looking at, null means -Infinity
startInclusive - determines if the start row is included
endRow - row to stop looking at, null means Infinity
endInclusive - determines if the end row is included
Returns:
The max row in the range, or null if there is no visible data in the range.
Throws:
TableNotFoundException
AccumuloException
AccumuloSecurityException

getExportedProps

public static Map<String,String> getExportedProps(org.apache.hadoop.fs.FileSystem fs,
                                                  org.apache.hadoop.fs.Path path)
                                           throws IOException
Throws:
IOException

importTable

public void importTable(String tableName,
                        String importDir)
                 throws TableExistsException,
                        AccumuloException,
                        AccumuloSecurityException
Description copied from interface: TableOperations
Imports a table exported via exportTable and copied via hadoop distcp.

Parameters:
tableName - Name of a table to create and import into.
importDir - Directory that contains the files copied by distcp from exportTable
Throws:
TableExistsException
AccumuloException
AccumuloSecurityException

exportTable

public void exportTable(String tableName,
                        String exportDir)
                 throws TableNotFoundException,
                        AccumuloException,
                        AccumuloSecurityException
Description copied from interface: TableOperations
Exports a table. The tables data is not exported, just table metadata and a list of files to distcp. The table being exported must be offline and stay offline for the duration of distcp. To avoid losing access to a table it can be cloned and the clone taken offline for export.

See docs/examples/README.export

Parameters:
tableName - Name of the table to export.
exportDir - An empty directory in HDFS where files containing table metadata and list of files to distcp will be placed.
Throws:
TableNotFoundException
AccumuloException
AccumuloSecurityException

testClassLoad

public boolean testClassLoad(String tableName,
                             String className,
                             String asTypeName)
                      throws TableNotFoundException,
                             AccumuloException,
                             AccumuloSecurityException
Description copied from interface: TableOperations
Test to see if the instance can load the given class as the given type. This check uses the table classpath if it is set.

Returns:
true if the instance can load the given class as the given type, false otherwise
Throws:
AccumuloException
TableNotFoundException
AccumuloSecurityException

attachIterator

public void attachIterator(String tableName,
                           IteratorSetting setting,
                           EnumSet<IteratorUtil.IteratorScope> scopes)
                    throws AccumuloSecurityException,
                           AccumuloException,
                           TableNotFoundException
Description copied from interface: TableOperations
Add an iterator to a table on the given scopes.

Specified by:
attachIterator in interface TableOperations
Overrides:
attachIterator in class TableOperationsHelper
Parameters:
tableName - the name of the table
setting - object specifying the properties of the iterator
Throws:
AccumuloSecurityException - thrown if the user does not have the ability to set properties on the table
AccumuloException
TableNotFoundException - throw if the table no longer exists

addConstraint

public int addConstraint(String tableName,
                         String constraintClassName)
                  throws AccumuloException,
                         AccumuloSecurityException,
                         TableNotFoundException
Description copied from interface: TableOperations
Add a new constraint to a table.

Specified by:
addConstraint in interface TableOperations
Overrides:
addConstraint in class TableOperationsHelper
Parameters:
tableName - the name of the table
constraintClassName - the full name of the constraint class
Returns:
the unique number assigned to the constraint
Throws:
AccumuloException - thrown if the constraint has already been added to the table or if there are errors in the configuration of existing constraints
AccumuloSecurityException - thrown if the user doesn't have permission to add the constraint
TableNotFoundException


Copyright © 2013 Apache Accumulo Project. All Rights Reserved.