LiuYuan created IMPALA-13192:
--------------------------------

             Summary: Impala Coordinator stuck and Full GC when execute query 
from nested temporary table.
                 Key: IMPALA-13192
                 URL: https://issues.apache.org/jira/browse/IMPALA-13192
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
         Environment: impalad version 4.3.0-RELEASE RELEASE (build 
14bb13e67e48742df72f9e1dd73be15ec7ba31bd)
            Reporter: LiuYuan


1.Create a table as below:

 
{code:java}
CREATE TABLE trunck_info (    
  user_id BIGINT ,    
  truck_length DOUBLE,    
  length_type STRING,    
  point_km DOUBLE,    
  estimate_mileage DOUBLE,    
  dep_rate DOUBLE,    
  line_day_cnt_01 BIGINT,    
  line_ly_cnt_01 BIGINT,    
  line_day_cnt_30 BIGINT,    
  line_ly_cnt_30 BIGINT,    
  line_day_cnt_60 BIGINT,    
  line_ly_cnt_60 BIGINT,    
  num_all_60 BIGINT,    
  num_est_60 BIGINT,    
  num_est_order_60 BIGINT,    
  num_act_60 BIGINT,    
  num_inh_60 BIGINT,    
  num_all_30 BIGINT,    
  num_est_30 BIGINT,    
  num_est_order_30 BIGINT,    
  num_act_30 BIGINT,    
  num_inh_30 BIGINT,    
  conn_num_60 BIGINT,    
  conn_num_30 BIGINT,    
  hp_num_60 INT,    
  hp_num_30 INT,    
  bzj_num INT,    
  feidan8_num_60 BIGINT,    
  feidan8_num_30 INT,    
  ts_num_60 BIGINT,    
  ts_num_30 INT,    
  new_mile_point_60 BIGINT,    
  new_mile_point_30 BIGINT    
)    
WITH SERDEPROPERTIES ('serialization.format'='1')
STORED AS TEXTFILE {code}
 

2.Query from nested temporary table, we can see coordinator hung and full gc

 

 

 
{panel:title=hung.sql}
with t1
as
(
select  user_id
   ,nvl(num_inh_60,0)+nvl(conn_num_60,0)+nvl(new_mile_point_60,0) as score_all  
 
   ,                  nvl(conn_num_60,0)+nvl(new_mile_point_60,0) as 
score_noinh 
  from trunck_info
)
,t2
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t1
 where score_noinh > 0
  ) a
)
,t3
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t2
 where score_noinh > 0
  ) a
)
,t4
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t3
 where score_noinh > 0
  ) a
)
,t5
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t4
 where score_noinh > 0
  ) a
)
,t6
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t5
 where score_noinh > 0
  ) a
)
,t7
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t6
 where score_noinh > 0
  ) a
)
,t8
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t7
 where score_noinh > 0
  ) a
)
,t9
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t8
 where score_noinh > 0
  ) a
)
,t10
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t9
 where score_noinh > 0
  ) a
)
,t11
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t10
 where score_noinh > 0
  ) a
)
,t12
as
(
select  user_id
       ,score_noinh + score_inh as score_all
       ,score_noinh
  from
  (
select  user_id
       ,score_noinh
       ,case when score_all >= 800 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 600 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 450 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >= 300 then if(score_all*0.5 >= 
450,450,score_all*0.5)
             when score_all >    0 then if(score_all*0.5 >= 
450,450,score_all*0.5)
    end as score_inh 
  from t11
 where score_noinh > 0
  ) a
)
 
 
select  user_id
       ,score_all
       ,case when score_all >= 800 then 'V6'
         when score_all >= 600 then 'V5'
         when score_all >= 450 then 'V4'
         when score_all >= 300 then 'V3'
         when score_all >    0 then 'V2'
                               else 'V1'
    end as tag
  from t12
order by 1 desc{panel}
after execute SQL coordinator will be hung and full GC, get jstack:
{code:java}
"Thread-24" #62 prio=5 os_prio=0 cpu=16381.52ms elapsed=2102.84s 
tid=0x000000000b8b4800 nid=0x8da9a runnable [0x00007efdf2f16000]
   java.lang.Thread.State: RUNNABLE
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1238)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at 
org.apache.impala.analysis.FunctionCallExpr.<init>(FunctionCallExpr.java:205)
    at 
org.apache.impala.analysis.FunctionCallExpr.clone(FunctionCallExpr.java:819)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.CastExpr.<init>(CastExpr.java:121)
    at org.apache.impala.analysis.CastExpr.clone(CastExpr.java:460)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.Predicate.<init>(Predicate.java:51)
    at 
org.apache.impala.analysis.BinaryPredicate.<init>(BinaryPredicate.java:156)
    at 
org.apache.impala.analysis.BinaryPredicate.clone(BinaryPredicate.java:418)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at 
org.apache.impala.analysis.FunctionCallExpr.<init>(FunctionCallExpr.java:205)
    at 
org.apache.impala.analysis.FunctionCallExpr.clone(FunctionCallExpr.java:819)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.CaseExpr.<init>(CaseExpr.java:169)
    at org.apache.impala.analysis.CaseExpr.clone(CaseExpr.java:457)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.Predicate.<init>(Predicate.java:51)
    at 
org.apache.impala.analysis.BinaryPredicate.<init>(BinaryPredicate.java:156)
    at 
org.apache.impala.analysis.BinaryPredicate.clone(BinaryPredicate.java:418)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at 
org.apache.impala.analysis.FunctionCallExpr.<init>(FunctionCallExpr.java:205)
    at 
org.apache.impala.analysis.FunctionCallExpr.clone(FunctionCallExpr.java:819)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.CaseExpr.<init>(CaseExpr.java:169)
    at org.apache.impala.analysis.CaseExpr.clone(CaseExpr.java:457)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.Predicate.<init>(Predicate.java:51)
    at 
org.apache.impala.analysis.BinaryPredicate.<init>(BinaryPredicate.java:156)
    at 
org.apache.impala.analysis.BinaryPredicate.clone(BinaryPredicate.java:418)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at 
org.apache.impala.analysis.FunctionCallExpr.<init>(FunctionCallExpr.java:205)
    at 
org.apache.impala.analysis.FunctionCallExpr.clone(FunctionCallExpr.java:819)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.CaseExpr.<init>(CaseExpr.java:169)
    at org.apache.impala.analysis.CaseExpr.clone(CaseExpr.java:457)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.Predicate.<init>(Predicate.java:51)
    at 
org.apache.impala.analysis.BinaryPredicate.<init>(BinaryPredicate.java:156)
    at 
org.apache.impala.analysis.BinaryPredicate.clone(BinaryPredicate.java:418)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.CaseExpr.<init>(CaseExpr.java:169)
    at org.apache.impala.analysis.CaseExpr.clone(CaseExpr.java:457)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.ArithmeticExpr.<init>(ArithmeticExpr.java:100)
    at org.apache.impala.analysis.ArithmeticExpr.clone(ArithmeticExpr.java:296)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at 
org.apache.impala.analysis.FunctionCallExpr.<init>(FunctionCallExpr.java:205)
    at 
org.apache.impala.analysis.FunctionCallExpr.clone(FunctionCallExpr.java:819)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at org.apache.impala.analysis.Expr.<init>(Expr.java:459)
    at org.apache.impala.analysis.CaseExpr.<init>(CaseExpr.java:169)
    at org.apache.impala.analysis.CaseExpr.clone(CaseExpr.java:457)
    at org.apache.impala.analysis.Expr.cloneList(Expr.java:1237)
    at 
org.apache.impala.analysis.ExprSubstitutionMap.clone(ExprSubstitutionMap.java:191)
    at org.apache.impala.analysis.InlineViewRef.<init>(InlineViewRef.java:143)
    at org.apache.impala.analysis.InlineViewRef.clone(InlineViewRef.java:600)
    at org.apache.impala.analysis.FromClause.clone(FromClause.java:167)
    at org.apache.impala.analysis.SelectStmt.<init>(SelectStmt.java:1638)
    at org.apache.impala.analysis.SelectStmt.clone(SelectStmt.java:1733)
    at org.apache.impala.analysis.SelectStmt.clone(SelectStmt.java:68)
    at org.apache.impala.analysis.InlineViewRef.<init>(InlineViewRef.java:113)
    at org.apache.impala.analysis.Analyzer.resolveTableRef(Analyzer.java:935)
    at org.apache.impala.analysis.FromClause.analyze(FromClause.java:90)
    at 
org.apache.impala.analysis.SelectStmt$SelectAnalyzer.analyze(SelectStmt.java:330)
    at 
org.apache.impala.analysis.SelectStmt$SelectAnalyzer.access$100(SelectStmt.java:282)
    at org.apache.impala.analysis.SelectStmt.analyze(SelectStmt.java:274)
    at org.apache.impala.analysis.InlineViewRef.analyze(InlineViewRef.java:240)
    at org.apache.impala.analysis.FromClause.analyze(FromClause.java:93)
    at 
org.apache.impala.analysis.SelectStmt$SelectAnalyzer.analyze(SelectStmt.java:330)
    at 
org.apache.impala.analysis.SelectStmt$SelectAnalyzer.access$100(SelectStmt.java:282)
    at org.apache.impala.analysis.SelectStmt.analyze(SelectStmt.java:274)
    at org.apache.impala.analysis.WithClause.analyze(WithClause.java:83)
    at org.apache.impala.analysis.QueryStmt.analyze(QueryStmt.java:168)
    at org.apache.impala.analysis.SelectStmt.analyze(SelectStmt.java:273)
    at 
org.apache.impala.analysis.AnalysisContext.analyze(AnalysisContext.java:530)
    at 
org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize(AnalysisContext.java:477)
    at 
org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2341)
    at org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:2089)
    at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1860)
    at 
org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:165) 
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to