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

Can't join HBase tables if one's name is the beginning of the other

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.7.0
    • HBase Handler
    • None
    • Reviewed

    Description

      I tried joining two tables, let's call them "table" and "table_a", but I'm seeing an array of errors such as this:

      java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
      	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
      	at java.util.ArrayList.get(ArrayList.java:322)
      	at org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat.getRecordReader(HiveHBaseTableInputFormat.java:118)
      	at org.apache.hadoop.hive.ql.io.HiveInputFormat.getRecordReader(HiveInputFormat.java:231)
      

      The reason is that HiveInputFormat.pushProjectionsAndFilters matches the aliases with startsWith so in my case the mappers for "table_a" were getting the columns from "table" as well as its own (and since it had less column, it was trying to get one too far in the array).

      I don't know if just changing it to "equals" fill fix it, my guess is it won't, since it may break RCFiles.

      Attachments

        1. HIVE-1903.1.patch
          15 kB
          John Sichi

        Issue Links

          Activity

            People

              jvs John Sichi
              jdcryans Jean-Daniel Cryans
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: