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

Query failed when select complex columns from joinned table (tez map join only)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.2.0
    • 1.3.0, 2.0.1, 2.1.0
    • Query Processor
    • None

    Description

      When map join happens, if projection columns include complex data types, query will fail.

      Steps to reproduce:

      hive> set hive.auto.convert.join;
      hive.auto.convert.join=true
      hive> desc foo;
      a                   	array<int>
      hive> select * from foo;
      [1,2]
      hive> desc src_int;
      key                 	int
      value               	string
      hive> select * from src_int where key=2;
      2	   val_2
      hive> select * from foo join src_int src  on src.key = foo.a[1];
      

      Query will fail with stack trace

      Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryArray cannot be cast to [Ljava.lang.Object;
      	at org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector.getList(StandardListObjectInspector.java:111)
      	at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:314)
      	at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serializeField(LazySimpleSerDe.java:262)
      	at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.doSerialize(LazySimpleSerDe.java:246)
      	at org.apache.hadoop.hive.serde2.AbstractEncodingAwareSerDe.serialize(AbstractEncodingAwareSerDe.java:50)
      	at org.apache.hadoop.hive.ql.exec.FileSinkOperator.process(FileSinkOperator.java:692)
      	at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:837)
      	at org.apache.hadoop.hive.ql.exec.SelectOperator.process(SelectOperator.java:88)
      	at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:837)
      	at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.internalForward(CommonJoinOperator.java:644)
      	at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genAllOneUniqueJoinObject(CommonJoinOperator.java:676)
      	at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.checkAndGenObject(CommonJoinOperator.java:754)
      	at org.apache.hadoop.hive.ql.exec.MapJoinOperator.process(MapJoinOperator.java:386)
      	... 23 more
      

      Similar error when projection columns include a map:

      hive> CREATE TABLE test (a INT, b MAP<INT, STRING>) STORED AS ORC;
      hive> INSERT OVERWRITE TABLE test SELECT 1, MAP(1, "val_1", 2, "val_2") FROM src LIMIT 1;
      hive> select * from src join test where src.key=test.a;
      

      Attachments

        1. HIVE-10729.05.patch
          28 kB
          Matt McCline
        2. HIVE-10729.04.patch
          27 kB
          Matt McCline
        3. HIVE-10729.03.patch
          20 kB
          Matt McCline
        4. HIVE-10729.2.patch
          2 kB
          Selina Zhang
        5. HIVE-10729.1.patch
          2 kB
          Selina Zhang

        Activity

          People

            mmccline Matt McCline
            selinazh Selina Zhang
            Votes:
            1 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: