[
https://issues.apache.org/jira/browse/IMPALA-13192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Quanlong Huang updated IMPALA-13192:
------------------------------------
Priority: Critical (was: Major)
> 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
> Priority: Critical
>
> 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)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]