DRILL-1407: Add scan size calculator option to HBase storage plugin 
configuration


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/9ac177c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/9ac177c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/9ac177c8

Branch: refs/heads/master
Commit: 9ac177c817fcc7d79ae1069e73f7e8cad88dfc99
Parents: 525bc79
Author: Steven Phillips <sphill...@maprtech.com>
Authored: Fri Sep 12 01:37:49 2014 -0700
Committer: Steven Phillips <sphill...@maprtech.com>
Committed: Sun Sep 28 01:10:56 2014 -0700

----------------------------------------------------------------------
 .../drill/exec/store/hbase/HBaseGroupScan.java       |  2 +-
 .../exec/store/hbase/HBaseStoragePluginConfig.java   | 15 ++++++++++++++-
 .../drill/exec/store/hbase/TableStatsCalculator.java | 13 +++++--------
 3 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/9ac177c8/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseGroupScan.java
----------------------------------------------------------------------
diff --git 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseGroupScan.java
 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseGroupScan.java
index 5a03063..1112de0 100644
--- 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseGroupScan.java
+++ 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseGroupScan.java
@@ -147,7 +147,7 @@ public class HBaseGroupScan extends AbstractGroupScan 
implements DrillHBaseConst
       HTable table = new HTable(storagePluginConfig.getHBaseConf(), 
hbaseScanSpec.getTableName());
       this.hTableDesc = table.getTableDescriptor();
       NavigableMap<HRegionInfo, ServerName> regionsMap = 
table.getRegionLocations();
-      statsCalculator = new TableStatsCalculator(table, hbaseScanSpec, 
storagePlugin.getContext().getConfig());
+      statsCalculator = new TableStatsCalculator(table, hbaseScanSpec, 
storagePlugin.getContext().getConfig(), storagePluginConfig);
 
       boolean foundStartRegion = false;
       regionsToScan = new TreeMap<HRegionInfo, ServerName>();

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/9ac177c8/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePluginConfig.java
----------------------------------------------------------------------
diff --git 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePluginConfig.java
 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePluginConfig.java
index d7d20a5..85f0d13 100644
--- 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePluginConfig.java
+++ 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePluginConfig.java
@@ -41,16 +41,24 @@ public class HBaseStoragePluginConfig extends 
StoragePluginConfigBase implements
   @JsonIgnore
   private Configuration hbaseConf;
 
+  @JsonIgnore
+  private Boolean sizeCalculatorEnabled;
+
   public static final String NAME = "hbase";
 
   @JsonCreator
-  public HBaseStoragePluginConfig(@JsonProperty("config") Map<String, String> 
props) {
+  public HBaseStoragePluginConfig(@JsonProperty("config") Map<String, String> 
props, @JsonProperty("size.calculator.enabled") Boolean sizeCalculatorEnabled) {
     this.config = props;
     if (config == null) {
       config = Maps.newHashMap();
     }
     logger.debug("Initializing HBase StoragePlugin configuration with 
zookeeper quorum '{}', port '{}'.",
         config.get(HConstants.ZOOKEEPER_QUORUM), 
config.get(HBASE_ZOOKEEPER_PORT));
+    if (sizeCalculatorEnabled == null) {
+      this.sizeCalculatorEnabled = false;
+    } else {
+      this.sizeCalculatorEnabled = sizeCalculatorEnabled;
+    }
   }
 
   @JsonProperty
@@ -58,6 +66,11 @@ public class HBaseStoragePluginConfig extends 
StoragePluginConfigBase implements
     return ImmutableMap.copyOf(config);
   }
 
+  @JsonProperty("size.calculator.enabled")
+  public boolean isSizeCalculatorEnabled() {
+    return sizeCalculatorEnabled;
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/9ac177c8/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/TableStatsCalculator.java
----------------------------------------------------------------------
diff --git 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/TableStatsCalculator.java
 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/TableStatsCalculator.java
index 125483e..6a1f9f6 100644
--- 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/TableStatsCalculator.java
+++ 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/TableStatsCalculator.java
@@ -46,8 +46,6 @@ public class TableStatsCalculator {
 
   private static final String DRILL_EXEC_HBASE_SCAN_SAMPLE_ROWS_COUNT = 
"drill.exec.hbase.scan.samplerows.count";
 
-  private static final String DRILL_EXEC_HBASE_SCAN_SIZECALCULATOR_ENABLED = 
"drill.exec.hbase.scan.sizecalculator.enabled";
-
   private static final int DEFAULT_SAMPLE_SIZE = 100;
 
   /**
@@ -64,10 +62,10 @@ public class TableStatsCalculator {
    *
    * @param table
    * @param hbaseScanSpec
-   * @param drillConfig
+   * @param config
    * @throws IOException
    */
-  public TableStatsCalculator(HTable table, HBaseScanSpec hbaseScanSpec, 
DrillConfig config) throws IOException {
+  public TableStatsCalculator(HTable table, HBaseScanSpec hbaseScanSpec, 
DrillConfig config, HBaseStoragePluginConfig storageConfig) throws IOException {
     HBaseAdmin admin = new HBaseAdmin(table.getConfiguration());
     try {
       int rowsToSample = rowsToSample(config);
@@ -90,7 +88,7 @@ public class TableStatsCalculator {
         scanner.close();
       }
 
-      if (!enabled(config)) {
+      if (!enabled(storageConfig)) {
         logger.info("Region size calculation disabled.");
         return;
       }
@@ -141,9 +139,8 @@ public class TableStatsCalculator {
 
   }
 
-  private boolean enabled(DrillConfig config) {
-    return config.hasPath(DRILL_EXEC_HBASE_SCAN_SIZECALCULATOR_ENABLED)
-        ? config.getBoolean(DRILL_EXEC_HBASE_SCAN_SIZECALCULATOR_ENABLED) : 
true;
+  private boolean enabled(HBaseStoragePluginConfig config) {
+    return config.isSizeCalculatorEnabled();
   }
 
   private int rowsToSample(DrillConfig config) {

Reply via email to