Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-6650

hive.optimize.index.filter breaks non-index where with HBaseStorageHandler

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 0.12.0
    • 0.13.0
    • HBase Handler
    • None

    Description

      With the above enabled, where clauses including non-rowkey columns cannot be used with the HBaseStorageHandler. Job fails to launch with the following exception.

      java.lang.RuntimeException: Unexpected residual predicate (s_address = '200 WEST 56TH STREET')
      at org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat.convertFilter(HiveHBaseTableInputFormat.java:292)
      at org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat.getSplits(HiveHBaseTableInputFormat.java:495)
      at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:294)
      at org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getSplits(CombineHiveInputFormat.java:303)
      at org.apache.hadoop.mapreduce.JobSubmitter.writeOldSplits(JobSubmitter.java:518)
      at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:510)
      at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:392)
      at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
      at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAs(Subject.java:396)
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
      at org.apache.hadoop.mapreduce.Job.submit(Job.java:1265)
      at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:562)
      at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:557)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAs(Subject.java:396)
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
      at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:557)
      at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:548)
      at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:425)
      at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:136)
      at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)
      at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)
      at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1437)
      at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1215)
      at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1043)
      at org.apache.hadoop.hive.ql.Driver.run(Driver.java:911)
      at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
      at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
      at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:413)
      at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:781)
      at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
      at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:614)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
      Job Submission failed with exception 'java.lang.RuntimeException(Unexpected residual predicate (s_address = '200 WEST 56TH STREET'))'
      FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
      

      I believe this bug was introduced in HIVE-2036, see change to OpProcFactory.java that always includes full predicate, even after storage handler negotiates the predicates it can pushdown. Since this behavior is divergent from input formats (they cannot negotiate), there's no harm in the SH ignoring non-indexed predicates – Hive respects all of them at a layer above anyway. Might as well remove the check/exception.

      Attachments

        1. HIVE-6650.3.patch
          6 kB
          Nick Dimiduk
        2. HIVE-6650.2.patch
          6 kB
          Nick Dimiduk
        3. HIVE-6650.1.patch
          6 kB
          Nick Dimiduk
        4. HIVE-6650.0.patch
          4 kB
          Nick Dimiduk

        Activity

          People

            ndimiduk Nick Dimiduk
            ndimiduk Nick Dimiduk
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: