[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14734754#comment-14734754 ] Aihua Xu commented on HIVE-11617: - Thanks for reviewing and commit, [~jcamachorodriguez] > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Improvement > Components: Logical Optimizer >Affects Versions: 2.0.0 >Reporter: Aihua Xu >Assignee: Aihua Xu > Fix For: 2.0.0 > > Attachments: HIVE-11617.2.patch, HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at >
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14730987#comment-14730987 ] Jesus Camacho Rodriguez commented on HIVE-11617: +1 > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer >Reporter: Aihua Xu >Assignee: Aihua Xu > Attachments: HIVE-11617.2.patch, HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at >
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14727497#comment-14727497 ] Aihua Xu commented on HIVE-11617: - Failed cases are not related. > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer >Reporter: Aihua Xu >Assignee: Aihua Xu > Attachments: HIVE-11617.2.patch, HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at >
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14723590#comment-14723590 ] Aihua Xu commented on HIVE-11617: - I checked the test cases. Mostly seems we were marking the fields as Expression in the lineage incorrectly, which should be "simple". I will generate the new baselines for them. I will check TestHCatClient.testTableSchemaPropagation and testCliDriver_lineage3 further to see what the correct results should be. > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer >Reporter: Aihua Xu >Assignee: Aihua Xu > Attachments: HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61)
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14723723#comment-14723723 ] Aihua Xu commented on HIVE-11617: - TestHCatClient.testTableSchemaPropagation passed locally. Seems unrelated. > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer >Reporter: Aihua Xu >Assignee: Aihua Xu > Attachments: HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at >
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14723798#comment-14723798 ] Aihua Xu commented on HIVE-11617: - Went through lineage2 and lineage3. Seems the orders of vertices and edges inside the json output have changed including changing vertex id due to different process order. But the result seems reasonable. I will update the baseline for them as well. > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer >Reporter: Aihua Xu >Assignee: Aihua Xu > Attachments: HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at >
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14723888#comment-14723888 ] Aihua Xu commented on HIVE-11617: - Just created the code review. Can you guys help review the code? [~jcamachorodriguez] and [~hsubramaniyan]? > Explain plan for multiple lateral views is very slow > > > Key: HIVE-11617 > URL: https://issues.apache.org/jira/browse/HIVE-11617 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer >Reporter: Aihua Xu >Assignee: Aihua Xu > Attachments: HIVE-11617.2.patch, HIVE-11617.patch, HIVE-11617.patch > > > The following explain job will be very slow or never finish if there are many > lateral views involved. High CPU usage is also noticed. > {noformat} > CREATE TABLE `t1`(`pattern` array); > > explain select * from t1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1 > lateral view explode(pattern) tbl1 as col1; > {noformat} > From jstack, the job is busy with preorder tree traverse. > {noformat} > at java.util.regex.Matcher.getTextLength(Matcher.java:1234) > at java.util.regex.Matcher.reset(Matcher.java:308) > at java.util.regex.Matcher.(Matcher.java:228) > at java.util.regex.Pattern.matcher(Pattern.java:1088) > at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) > at > org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) > at > org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) > at > org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) >
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14720001#comment-14720001 ] Ashutosh Chauhan commented on HIVE-11617: - FYI : [~jcamachorodriguez] , [~hsubramaniyan] Explain plan for multiple lateral views is very slow Key: HIVE-11617 URL: https://issues.apache.org/jira/browse/HIVE-11617 Project: Hive Issue Type: Bug Components: Logical Optimizer Reporter: Aihua Xu Assignee: Aihua Xu Attachments: HIVE-11617.patch, HIVE-11617.patch The following explain job will be very slow or never finish if there are many lateral views involved. High CPU usage is also noticed. {noformat} CREATE TABLE `t1`(`pattern` arrayint); explain select * from t1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1; {noformat} From jstack, the job is busy with preorder tree traverse. {noformat} at java.util.regex.Matcher.getTextLength(Matcher.java:1234) at java.util.regex.Matcher.reset(Matcher.java:308) at java.util.regex.Matcher.init(Matcher.java:228) at java.util.regex.Pattern.matcher(Pattern.java:1088) at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14719966#comment-14719966 ] Hive QA commented on HIVE-11617: {color:red}Overall{color}: -1 at least one tests failed Here are the results of testing the latest attachment: https://issues.apache.org/jira/secure/attachment/12752844/HIVE-11617.patch {color:red}ERROR:{color} -1 due to 13 failed/errored test(s), 9380 tests executed *Failed tests:* {noformat} org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_correlationoptimizer5 org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_join32 org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_join32_lessSize org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_join33 org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_lineage2 org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_lineage3 org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_subquery_multiinsert org.apache.hadoop.hive.cli.TestMiniTezCliDriver.testCliDriver_explainuser_2 org.apache.hadoop.hive.cli.TestSparkCliDriver.testCliDriver_join32 org.apache.hadoop.hive.cli.TestSparkCliDriver.testCliDriver_join32_lessSize org.apache.hadoop.hive.cli.TestSparkCliDriver.testCliDriver_join33 org.apache.hadoop.hive.cli.TestSparkCliDriver.testCliDriver_subquery_multiinsert org.apache.hive.hcatalog.api.TestHCatClient.testTableSchemaPropagation {noformat} Test results: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/5099/testReport Console output: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/5099/console Test logs: http://ec2-174-129-184-35.compute-1.amazonaws.com/logs/PreCommit-HIVE-TRUNK-Build-5099/ Messages: {noformat} Executing org.apache.hive.ptest.execution.PrepPhase Executing org.apache.hive.ptest.execution.ExecutionPhase Executing org.apache.hive.ptest.execution.ReportingPhase Tests exited with: TestsFailedException: 13 tests failed {noformat} This message is automatically generated. ATTACHMENT ID: 12752844 - PreCommit-HIVE-TRUNK-Build Explain plan for multiple lateral views is very slow Key: HIVE-11617 URL: https://issues.apache.org/jira/browse/HIVE-11617 Project: Hive Issue Type: Bug Components: Logical Optimizer Reporter: Aihua Xu Assignee: Aihua Xu Attachments: HIVE-11617.patch, HIVE-11617.patch The following explain job will be very slow or never finish if there are many lateral views involved. High CPU usage is also noticed. {noformat} CREATE TABLE `t1`(`pattern` arrayint); explain select * from t1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1 lateral view explode(pattern) tbl1 as col1; {noformat} From jstack, the job is busy with preorder tree traverse. {noformat} at java.util.regex.Matcher.getTextLength(Matcher.java:1234) at java.util.regex.Matcher.reset(Matcher.java:308) at java.util.regex.Matcher.init(Matcher.java:228) at java.util.regex.Pattern.matcher(Pattern.java:1088) at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) at
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14710074#comment-14710074 ] Aihua Xu commented on HIVE-11617: - I will break the task into runtime performance change and explain output change (in subtasks) so that I can make sure the run time change should not have different affects on the results but the performance. Explain plan for multiple lateral views is very slow Key: HIVE-11617 URL: https://issues.apache.org/jira/browse/HIVE-11617 Project: Hive Issue Type: Bug Components: Logical Optimizer Reporter: Aihua Xu Assignee: Aihua Xu Attachments: HIVE-11617.patch The following explain job will be very slow or never finish if there are many lateral views involved. High CPU usage is also noticed. {noformat} EXPLAIN SELECT * from ( SELECT * FROM table1 ) x LATERAL VIEW json_tuple(...) x1 LATERAL VIEW json_tuple(...) x2 ... {noformat} From jstack, the job is busy with preorder tree traverse. {noformat} at java.util.regex.Matcher.getTextLength(Matcher.java:1234) at java.util.regex.Matcher.reset(Matcher.java:308) at java.util.regex.Matcher.init(Matcher.java:228) at java.util.regex.Pattern.matcher(Pattern.java:1088) at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14708416#comment-14708416 ] Aihua Xu commented on HIVE-11617: - Seems my change causes the plan not to output some necessary info. I will fix that. Explain plan for multiple lateral views is very slow Key: HIVE-11617 URL: https://issues.apache.org/jira/browse/HIVE-11617 Project: Hive Issue Type: Bug Components: Logical Optimizer Reporter: Aihua Xu Assignee: Aihua Xu Attachments: HIVE-11617.patch The following explain job will be very slow or never finish if there are many lateral views involved. High CPU usage is also noticed. {noformat} EXPLAIN SELECT * from ( SELECT * FROM table1 ) x LATERAL VIEW json_tuple(...) x1 LATERAL VIEW json_tuple(...) x2 ... {noformat} From jstack, the job is busy with preorder tree traverse. {noformat} at java.util.regex.Matcher.getTextLength(Matcher.java:1234) at java.util.regex.Matcher.reset(Matcher.java:308) at java.util.regex.Matcher.init(Matcher.java:228) at java.util.regex.Pattern.matcher(Pattern.java:1088) at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61)
[jira] [Commented] (HIVE-11617) Explain plan for multiple lateral views is very slow
[ https://issues.apache.org/jira/browse/HIVE-11617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14706690#comment-14706690 ] Aihua Xu commented on HIVE-11617: - For lateral view, there will be one parent with 2 children and one child with 2 parents. For such case, seems PreOrderWalker could need to visit same nodes multiple times (including all the descendants). That seems to cause the job to run for ever. I will investigate to switch to a different Walker (something like level order walker). Explain plan for multiple lateral views is very slow Key: HIVE-11617 URL: https://issues.apache.org/jira/browse/HIVE-11617 Project: Hive Issue Type: Bug Components: Logical Optimizer Reporter: Aihua Xu Assignee: Aihua Xu The following explain job will be very slow or never finish if there are many lateral views involved. High CPU usage is also noticed. {noformat} EXPLAIN SELECT * from ( SELECT * FROM table1 ) x LATERAL VIEW json_tuple(...) x1 LATERAL VIEW json_tuple(...) x2 ... {noformat} From jstack, the job is busy with preorder tree traverse. {noformat} at java.util.regex.Matcher.getTextLength(Matcher.java:1234) at java.util.regex.Matcher.reset(Matcher.java:308) at java.util.regex.Matcher.init(Matcher.java:228) at java.util.regex.Pattern.matcher(Pattern.java:1088) at org.apache.hadoop.hive.ql.lib.RuleRegExp.cost(RuleRegExp.java:67) at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:72) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94) at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:56) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at org.apache.hadoop.hive.ql.lib.PreOrderWalker.walk(PreOrderWalker.java:61) at