You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2010/01/07 18:35:31 UTC

svn commit: r896935 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java

Author: apurtell
Date: Thu Jan  7 17:34:15 2010
New Revision: 896935

URL: http://svn.apache.org/viewvc?rev=896935&view=rev
Log:
HBASE-2095 TIF should support more confs for the scanner

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=896935&r1=896934&r2=896935&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Thu Jan  7 17:34:15 2010
@@ -277,9 +277,10 @@
    HBASE-2080  [EC2] Support multivolume local instance storage
    HBASE-2083  [EC2] HDFS DataNode no longer required on master
    HBASE-2084  [EC2] JAVA_HOME handling broken
-   HBASE-2036  Use Configuration instead of HBaseConfiguration (Enis Soztutar via Stack)
-   HBASE-2085  StringBuffer -> StringBuilder - conversion of references as necessary
-               (Kay Kay via Stack)
+   HBASE-2036  Use Configuration instead of HBaseConfiguration (Enis Soztutar
+               via Stack)
+   HBASE-2085  StringBuffer -> StringBuilder - conversion of references as
+               necessary (Kay Kay via Stack)
    HBASE-2052  Upper bound of outstanding WALs can be overrun
    HBASE-2086  Job(configuration,String) deprecated (Kay Kay via Stack)
    HBASE-1996  Configure scanner buffer in bytes instead of number of rows
@@ -287,6 +288,8 @@
    HBASE-2090  findbugs issues (Kay Kay via Stack)
    HBASE-2089  HBaseConfiguration() ctor. deprecated (Kay Kay via Stack)
    HBASE-2035  Binary values are formatted wrong in shell
+   HBASE-2095  TIF shuold support more confs for the scanner (Bassam Tabbara
+               via Andrew Purtell)
 
   NEW FEATURES
    HBASE-1901  "General" partitioner for "hbase-48" bulk (behind the api, write

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java?rev=896935&r1=896934&r2=896935&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java Thu Jan  7 17:34:15 2010
@@ -38,10 +38,24 @@
   
   private final Log LOG = LogFactory.getLog(TableInputFormat.class);
   
-  /** Job parameter that specifies the output table. */
+  /** Job parameter that specifies the input table. */
   public static final String INPUT_TABLE = "hbase.mapreduce.inputtable";
-  /** Space delimited list of columns. */
+  /** Base-64 encoded scanner. All other SCAN_ confs are ignored if this is specified. */
   public static final String SCAN = "hbase.mapreduce.scan";
+  /** Space delimited list of columns to scan. */
+  public static final String SCAN_COLUMNS = "hbase.mapreduce.scan.columns";
+  /** The timestamp used to filter columns with a specific timestamp. */
+  public static final String SCAN_TIMESTAMP = "hbase.mapreduce.scan.timestamp";
+  /** The starting timestamp used to filter columns with a specific range of versions. */
+  public static final String SCAN_TIMERANGE_START = "hbase.mapreduce.scan.timerange.start";
+  /** The ending timestamp used to filter columns with a specific range of versions. */
+  public static final String SCAN_TIMERANGE_END = "hbase.mapreduce.scan.timerange.end";
+  /** The maximum number of version to return. */
+  public static final String SCAN_MAXVERSIONS = "hbase.mapreduce.scan.maxversions";
+  /** Set to false to disable server-side caching of blocks for this scan. */
+  public static final String SCAN_CACHEBLOCKS = "hbase.mapreduce.scan.cacheblocks";
+  /** The number of rows for caching that will be passed to scanners. */
+  public static final String SCAN_CACHEDROWS = "hbase.mapreduce.scan.cachedrows";
   
   /** The configuration. */
   private Configuration conf = null;
@@ -74,12 +88,49 @@
     } catch (Exception e) {
       LOG.error(StringUtils.stringifyException(e));
     }
+    
     Scan scan = null;
-    try {
-      scan = TableMapReduceUtil.convertStringToScan(conf.get(SCAN));
-    } catch (IOException e) {
-      LOG.error("An error occurred.", e);
+    
+    if (conf.get(SCAN) != null) {
+      try {
+        scan = TableMapReduceUtil.convertStringToScan(conf.get(SCAN));
+      } catch (IOException e) {
+        LOG.error("An error occurred.", e);
+      }
+    } else {
+      try {
+        scan = new Scan();
+        
+        if (conf.get(SCAN_COLUMNS) != null) {
+          scan.addColumns(conf.get(SCAN_COLUMNS));
+        }
+        
+        if (conf.get(SCAN_TIMESTAMP) != null) {
+          scan.setTimeStamp(Long.parseLong(conf.get(SCAN_TIMESTAMP)));
+        }
+        
+        if (conf.get(SCAN_TIMERANGE_START) != null && conf.get(SCAN_TIMERANGE_END) != null) {
+          scan.setTimeRange(
+              Long.parseLong(conf.get(SCAN_TIMERANGE_START)), 
+              Long.parseLong(conf.get(SCAN_TIMERANGE_END)));
+        }
+
+        if (conf.get(SCAN_MAXVERSIONS) != null) {
+          scan.setMaxVersions(Integer.parseInt(conf.get(SCAN_MAXVERSIONS)));
+        }
+        
+        if (conf.get(SCAN_CACHEBLOCKS) != null) {
+          scan.setCacheBlocks(Boolean.parseBoolean(conf.get(SCAN_CACHEBLOCKS)));
+        }
+
+        if (conf.get(SCAN_CACHEDROWS) != null) {
+          scan.setCaching(Integer.parseInt(conf.get(SCAN_CACHEDROWS)));
+        }
+      } catch (Exception e) {
+          LOG.error(StringUtils.stringifyException(e));
+      }
     }
+
     setScan(scan);
   }