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

Query based compaction fails for tables with CDT and columns with Reserved Keywords

Log workAgile BoardRank to TopRank to BottomBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      Query based compaction fails on Tables having complex data types with reserved keywords for columns. The compaction fails while creating a temporary table as it does not quote the columns correctly.

       

      Below are the steps to reproduce the issue.

      create table complex_dt_compact2(col1 array<struct<arr_col1:int, `timestamp`:string>>);
      insert into complex_dt_compact2 SELECT ARRAY(NAMED_STRUCT('arr_col1',1,'timestamp','2022-07-05 21:51:20.371'));
      insert into complex_dt_compact2 SELECT ARRAY(NAMED_STRUCT('arr_col1',2,'timestamp','2022-07-05 21:51:20.371'));
      alter table complex_dt_compact2 compact 'major' and wait; 

      Error:

      2022-07-05T22:15:47.710Z hiveserver2-0.hiveserver2-service.compute-1657056457-xkcx.svc.cluster.local hiveserver2 1 dbb4011d-c788-4b99-a31d-06bb6dd7182e [mdc@18060 class="compactor.Worker" level="ERROR" thread="hiveserver2-0.hiveserver2-service.compute-1657056457-xkcx.svc.cluster.local-64_executor"] Caught exception while trying to compact id:3,dbname:default,tableName:complex_dt_compact2,partName:null,state:,type:MAJOR,enqueueTime:0,start:0,properties:null,runAs:hive,tooManyAborts:false,hasOldAbort:false,highestWriteId:3,errorMessage:null,workerId: null,initiatorId: null,retryRetention0. Marking failed to avoid repeated failures
          java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to run CREATE temporary external table default_tmp_compactor_complex_dt_compact2_1657059347578(`operation` int, `originalTransaction` bigint, `bucket` int, `rowId` bigint, `currentTransaction` bigint, `row` struct<`col1` :array<struct<arr_col1:int,timestamp:string>>>)  stored as orc LOCATION 's3a://obfuscated/clusters/obfuscated/obfuscated/warehouse/tablespace/managed/hive/complex_dt_compact2/base_0000003_v0000038' TBLPROPERTIES ('compactiontable'='true', 'transactional'='false')
              at org.apache.hadoop.hive.ql.txn.compactor.QueryCompactor.runCompactionQueries(QueryCompactor.java:120)
              at org.apache.hadoop.hive.ql.txn.compactor.MajorQueryCompactor.runCompaction(MajorQueryCompactor.java:63)
              at org.apache.hadoop.hive.ql.txn.compactor.Worker.findNextCompactionAndExecute(Worker.java:517)
              at org.apache.hadoop.hive.ql.txn.compactor.Worker.lambda$run$0(Worker.java:120)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at java.lang.Thread.run(Thread.java:750)
          Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to run CREATE temporary external table default_tmp_compactor_complex_dt_compact2_1657059347578(`operation` int, `originalTransaction` bigint, `bucket` int, `rowId` bigint, `currentTransaction` bigint, `row` struct<`col1` :array<struct<arr_col1:int,timestamp:string>>>)  stored as orc LOCATION 's3a://obfuscated/clusters/obfuscated/obfuscated/warehouse/tablespace/managed/hive/complex_dt_compact2/base_0000003_v0000038' TBLPROPERTIES ('compactiontable'='true', 'transactional'='false')
              at org.apache.hadoop.hive.ql.DriverUtils.runOnDriver(DriverUtils.java:73)
              at org.apache.hadoop.hive.ql.DriverUtils.runOnDriver(DriverUtils.java:50)
              at org.apache.hadoop.hive.ql.txn.compactor.QueryCompactor.runCompactionQueries(QueryCompactor.java:113)
              ... 7 more
          Caused by: (responseCode = 40000, errorMessage = FAILED: ParseException line 1:241 cannot recognize input near 'timestamp' ':' 'string' in column specification, SQLState = 42000, exception = line 1:241 cannot recognize input near 'timestamp' ':' 'string' in column specification)
              at org.apache.hadoop.hive.ql.DriverUtils.createProcessorException(DriverUtils.java:143)
              at org.apache.hadoop.hive.ql.Compiler.handleException(Compiler.java:466)
              at org.apache.hadoop.hive.ql.Compiler.compile(Compiler.java:122)
              at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:197)
              at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:636)
              at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:694)
              at org.apache.hadoop.hive.ql.Driver.run(Driver.java:526)
              at org.apache.hadoop.hive.ql.Driver.run(Driver.java:515)
              at org.apache.hadoop.hive.ql.DriverUtils.runOnDriver(DriverUtils.java:70)
              ... 9 more

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            chiran54321 Chiran Ravani Assign to me
            chiran54321 Chiran Ravani
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - Not Specified
              Not Specified
              Remaining:
              Remaining Estimate - 0h
              0h
              Logged:
              Time Spent - 1h 20m
              1h 20m

              Slack

                Issue deployment