diff options
author | Paul Rogers <progers@maprtech.com> | 2017-09-28 09:49:38 -0700 |
---|---|---|
committer | Paul Rogers <progers@maprtech.com> | 2017-10-11 13:14:56 -0700 |
commit | 42f7af22fc5d713aac07e057fd374ccd674e40df (patch) | |
tree | f3ca668122c6274f09078ec3b5066e9522f0cda5 /contrib/storage-hbase/src | |
parent | fe84713169d410c40da80d6faf658ba2ac884ccc (diff) |
DRILL-5830: Resolve regressions to MapR DB from DRILL-5546
- Back out HBase changes
- Code cleanup
- Test utilities
- Fix for DRILL-5829
closes #968
Diffstat (limited to 'contrib/storage-hbase/src')
7 files changed, 48 insertions, 73 deletions
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 1ee1da812..2b8cf18ea 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 @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -17,17 +17,22 @@ */ package org.apache.drill.exec.store.hbase; -import com.fasterxml.jackson.annotation.JacksonInject; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.base.Stopwatch; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.NavigableMap; +import java.util.PriorityQueue; +import java.util.Queue; +import java.util.Set; +import java.util.TreeMap; +import java.util.concurrent.TimeUnit; + import org.apache.drill.common.exceptions.DrillRuntimeException; import org.apache.drill.common.exceptions.ExecutionSetupException; import org.apache.drill.common.expression.SchemaPath; @@ -50,24 +55,18 @@ import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.RegionLocator; -import org.apache.hadoop.hbase.util.Bytes; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.NavigableMap; -import java.util.PriorityQueue; -import java.util.Queue; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.TimeUnit; +import com.fasterxml.jackson.annotation.JacksonInject; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Stopwatch; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; @JsonTypeName("hbase-scan") public class HBaseGroupScan extends AbstractGroupScan implements DrillHBaseConstants { @@ -144,8 +143,8 @@ public class HBaseGroupScan extends AbstractGroupScan implements DrillHBaseConst @Override public GroupScan clone(List<SchemaPath> columns) { HBaseGroupScan newScan = new HBaseGroupScan(this); - newScan.columns = columns == null ? ALL_COLUMNS : columns;; - newScan.verifyColumnsAndConvertStar(); + newScan.columns = columns == null ? ALL_COLUMNS : columns; + newScan.verifyColumns(); return newScan; } @@ -177,37 +176,19 @@ public class HBaseGroupScan extends AbstractGroupScan implements DrillHBaseConst } catch (IOException e) { throw new DrillRuntimeException("Error getting region info for table: " + hbaseScanSpec.getTableName(), e); } - verifyColumnsAndConvertStar(); + verifyColumns(); } - private void verifyColumnsAndConvertStar() { - boolean hasStarCol = false; - LinkedHashSet<SchemaPath> requestedColumns = new LinkedHashSet<>(); - + private void verifyColumns() { + if (Utilities.isStarQuery(columns)) { + return; + } for (SchemaPath column : columns) { - // convert * into [row_key, cf1, cf2, ..., cf_n]. - if (column.equals(Utilities.STAR_COLUMN)) { - hasStarCol = true; - Set<byte[]> families = hTableDesc.getFamiliesKeys(); - requestedColumns.add(ROW_KEY_PATH); - for (byte[] family : families) { - SchemaPath colFamily = SchemaPath.getSimplePath(Bytes.toString(family)); - requestedColumns.add(colFamily); - } - } else { - if (!(column.equals(ROW_KEY_PATH) || - hTableDesc.hasFamily(HBaseUtils.getBytes(column.getRootSegment().getPath())))) { - DrillRuntimeException.format("The column family '%s' does not exist in HBase table: %s .", - column.getRootSegment().getPath(), hTableDesc.getNameAsString()); - } - requestedColumns.add(column); + if (!(column.equals(ROW_KEY_PATH) || hTableDesc.hasFamily(HBaseUtils.getBytes(column.getRootSegment().getPath())))) { + DrillRuntimeException.format("The column family '%s' does not exist in HBase table: %s .", + column.getRootSegment().getPath(), hTableDesc.getNameAsString()); } } - - // since star column has been converted, reset this.cloumns. - if (hasStarCol) { - this.columns = new ArrayList<>(requestedColumns); - } } @Override diff --git a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseRecordReader.java b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseRecordReader.java index d6c02b5aa..cae7ce412 100644 --- a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseRecordReader.java +++ b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseRecordReader.java @@ -126,12 +126,10 @@ public class HBaseRecordReader extends AbstractRecordReader implements DrillHBas HBaseUtils.andFilterAtIndex(hbaseScan.getFilter(), HBaseUtils.LAST_FILTER, new FirstKeyOnlyFilter())); } } else { - throw new IllegalArgumentException("HBaseRecordReader does not allow column *. Column * should have been converted to list of <row_key, column family1, column family2, ..., column family_n"); -// rowKeyOnly = false; -// transformed.add(ROW_KEY_PATH); + rowKeyOnly = false; + transformed.add(ROW_KEY_PATH); } - return transformed; } diff --git a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseScanSpec.java b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseScanSpec.java index f9a585e69..797ec7fc2 100644 --- a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseScanSpec.java +++ b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseScanSpec.java @@ -93,5 +93,4 @@ public class HBaseScanSpec { + ", filter=" + (filter == null ? null : filter.toString()) + "]"; } - } diff --git a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSchemaFactory.java b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSchemaFactory.java index 56dfc10c3..548b679e7 100644 --- a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSchemaFactory.java +++ b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSchemaFactory.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -94,7 +94,5 @@ public class HBaseSchemaFactory implements SchemaFactory { public String getTypeName() { return HBaseStoragePluginConfig.NAME; } - } - } diff --git a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java index 81899cf60..62f351c45 100644 --- a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java +++ b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -154,7 +154,5 @@ public class HBaseStoragePlugin extends AbstractStoragePlugin { private HBaseStoragePlugin getHBaseStoragePlugin() { return HBaseStoragePlugin.this; } - } - } diff --git a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSubScan.java b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSubScan.java index 302ccca4e..0527391a2 100644 --- a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSubScan.java +++ b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSubScan.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -41,7 +41,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; import com.google.common.base.Preconditions; -// Class containing information for reading a single HBase region +/** + * Contains information for reading a single HBase region + */ + @JsonTypeName("hbase-region-scan") public class HBaseSubScan extends AbstractBase implements SubScan { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HBaseSubScan.class); @@ -210,12 +213,10 @@ public class HBaseSubScan extends AbstractBase implements SubScan { + ", filter=" + (getScanFilter() == null ? null : getScanFilter().toString()) + ", regionServer=" + regionServer + "]"; } - } @Override public int getOperatorType() { return CoreOperatorType.HBASE_SUB_SCAN_VALUE; } - } diff --git a/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/BaseHBaseTest.java b/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/BaseHBaseTest.java index e12c77cc9..b957347c8 100644 --- a/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/BaseHBaseTest.java +++ b/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/BaseHBaseTest.java @@ -38,7 +38,7 @@ import com.google.common.io.Files; public class BaseHBaseTest extends BaseTestQuery { - private static final String HBASE_STORAGE_PLUGIN_NAME = "hbase"; + public static final String HBASE_STORAGE_PLUGIN_NAME = "hbase"; protected static Configuration conf = HBaseConfiguration.create(); |