You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Krystal (JIRA)" <ji...@apache.org> on 2014/10/02 00:13:34 UTC

[jira] [Commented] (DRILL-1403) HBase predicate pushdown filters are not getting applied

    [ https://issues.apache.org/jira/browse/DRILL-1403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14155654#comment-14155654 ] 

Krystal commented on DRILL-1403:
--------------------------------

git.commit.id.abbrev=5c220e3

I ran the following query and looks like the filter is not being pushed down:

0: jdbc:drill:schema=hbase> explain plan for select cast(student.onecf.name as varchar(30)) from student where row_key < '30' and row_key > '10';
+------------+------------+
|    text    |    json    |
+------------+------------+
| 00-00    Screen
00-01      Project(EXPR$0=[CAST($1):VARCHAR(30) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary"])
00-02        SelectionVectorRemover
00-03          Filter(condition=[AND(<($0, '30'), >($0, '10'))])
00-04            Project(row_key=[$0], ITEM=[ITEM($1, 'name')])
00-05              Scan(groupscan=[HBaseGroupScan [HBaseScanSpec=HBaseScanSpec [tableName=student, startRow=null, stopRow=null, filter=null], columns=[SchemaPath [`row_key`], SchemaPath [`onecf`.`name`]]]])
 | {
  "head" : {
    "version" : 1,
    "generator" : {
      "type" : "ExplainHandler",
      "info" : ""
    },
    "type" : "APACHE_DRILL_PHYSICAL",
    "options" : [ ],
    "queue" : 0,
    "resultMode" : "EXEC"
  },
  "graph" : [ {
    "pop" : "hbase-scan",
    "@id" : 5,
    "hbaseScanSpec" : {
      "tableName" : "student",
      "startRow" : "",
      "stopRow" : "",
      "serializedFilter" : null
    },
    "storage" : {
      "type" : "hbase",
      "config" : {
        "hbase.zookeeper.quorum" : "10.10.100.113,10.10.100.114,10.10.100.115",
        "hbase.zookeeper.property.clientPort" : "5181"
      },

If I use a "*" in the select instead of specifying a column, then the filter got pushed down.  For example,

0: jdbc:drill:schema=hbase> explain plan for select * from student where row_key < '30' and row_key > '10';
+------------+------------+
|    text    |    json    |
+------------+------------+
| 00-00    Screen
00-01      Project(row_key=[$0], fivecf=[$1], fourcf=[$2], onecf=[$3], threecf=[$4], twocf=[$5])
00-02        Scan(groupscan=[HBaseGroupScan [HBaseScanSpec=HBaseScanSpec [tableName=student, startRow=10\x00, stopRow=30, filter=FilterList AND (2/2): [RowFilter (LESS, 30), RowFilter (GREATER, 10)]], columns=[SchemaPath [`*`]]]])
 | {
  "head" : {
    "version" : 1,
    "generator" : {
      "type" : "ExplainHandler",
      "info" : ""
    },
    "type" : "APACHE_DRILL_PHYSICAL",
    "options" : [ ],
    "queue" : 0,
    "resultMode" : "EXEC"
  },
  "graph" : [ {
    "pop" : "hbase-scan",
    "@id" : 2,
    "hbaseScanSpec" : {
      "tableName" : "student",
      "startRow" : "MTAA",
      "stopRow" : "MzA=",
      "serializedFilter" : "DgApb3JnLmFwYWNoZS5oYWRvb3AuaGJhc2UuZmlsdGVyLkZpbHRlckxpc3QAAAAAAg4yAARMRVNTNi8CMzAOMgAHR1JFQVRFUjYvAjEw"
    },


> HBase predicate pushdown filters are not getting applied
> --------------------------------------------------------
>
>                 Key: DRILL-1403
>                 URL: https://issues.apache.org/jira/browse/DRILL-1403
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Functions - Drill
>            Reporter: B Anil Kumar
>            Assignee: Aditya Kishore
>              Labels: patch
>             Fix For: 0.6.0
>
>         Attachments: 0001-DRILL-1403.patch, DRILL-1403-HBase-predicate-pushdown-filters-are-not-.patch
>
>
> It seems, due to latest changes HBase predicate pushdown is not getting applied.
> In below snippet, "le.accept(this, null)" returning null.
> {noformat}
>   public HBaseScanSpec parseTree() {
>     HBaseScanSpec parsedSpec = le.accept(this, null);
>     if (parsedSpec != null) {
>       parsedSpec = mergeScanSpecs("booleanAnd", this.groupScan.getHBaseScanSpec(), parsedSpec);
>       /*
>        * If RowFilter is THE filter attached to the scan specification,
>        * remove it since its effect is also achieved through startRow and stopRow.
>        */
>       if (parsedSpec.filter instanceof RowFilter) {
>         parsedSpec.filter = null;
>       }
>     }
>     return parsedSpec;
>   }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)