[
https://issues.apache.org/jira/browse/HIVE-372?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12689578#action_12689578
]
Richard Lee commented on HIVE-372:
----------------------------------
I've also noticed this problem. based on the thread dump i saw... it looks
like there's some bigtime indirect recursion... i'm guessing the parser is
implemented recursive descent and each time we recurse into the next level of
function some sizable amount of memory is used up.
Here's a stacktrace of a select with 8 nested trims:
at org.antlr.runtime.CommonTokenStream.LB(CommonTokenStream.java:289)
at org.antlr.runtime.CommonTokenStream.LT(CommonTokenStream.java:244)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14723)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13624)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163_fragment(HiveParser.java:16523)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163(HiveParser.java:16734)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14059)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13624)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14289)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred155_fragment(HiveParser.java:16479)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred155(HiveParser.java:16804)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13537)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14289)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13624)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163_fragment(HiveParser.java:16523)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163(HiveParser.java:16734)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14059)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13624)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163_fragment(HiveParser.java:16523)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163(HiveParser.java:16734)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14059)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13624)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163_fragment(HiveParser.java:16523)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163(HiveParser.java:16734)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14059)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.function(HiveParser.java:12888)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred155_fragment(HiveParser.java:16479)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred155(HiveParser.java:16804)
at
org.apache.hadoop.hive.ql.parse.HiveParser.atomExpression(HiveParser.java:13537)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceFieldExpression(HiveParser.java:13728)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163_fragment(HiveParser.java:16523)
at
org.apache.hadoop.hive.ql.parse.HiveParser.synpred163(HiveParser.java:16734)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceUnaryExpression(HiveParser.java:14059)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseXorExpression(HiveParser.java:14394)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceStarExpression(HiveParser.java:14538)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedencePlusExpression(HiveParser.java:14682)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAmpersandExpression(HiveParser.java:14819)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceBitwiseOrExpression(HiveParser.java:14956)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceEqualExpression(HiveParser.java:15100)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceNotExpression(HiveParser.java:15264)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceAndExpression(HiveParser.java:15367)
at
org.apache.hadoop.hive.ql.parse.HiveParser.precedenceOrExpression(HiveParser.java:15504)
at
org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:13455)
at
org.apache.hadoop.hive.ql.parse.HiveParser.selectExpression(HiveParser.java:10075)
at
org.apache.hadoop.hive.ql.parse.HiveParser.selectItem(HiveParser.java:9655)
at
org.apache.hadoop.hive.ql.parse.HiveParser.selectList(HiveParser.java:9536)
at
org.apache.hadoop.hive.ql.parse.HiveParser.selectClause(HiveParser.java:9284)
at
org.apache.hadoop.hive.ql.parse.HiveParser.regular_body(HiveParser.java:7893)
at
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatement(HiveParser.java:7527)
at
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:7332)
at
org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:583)
at
org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:369)
at
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:355)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:184)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:174)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:207)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:306)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:165)
at org.apache.hadoop.mapred.JobShell.run(JobShell.java:54)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at org.apache.hadoop.mapred.JobShell.main(JobShell.java:68)
> Nested UDFs cause _very_ high memory usage when processing query
> ----------------------------------------------------------------
>
> Key: HIVE-372
> URL: https://issues.apache.org/jira/browse/HIVE-372
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Query Processor
> Environment: Fedora Linux, 10x Amazon EC2 (Large Instance w/ 8GB Ram)
> Reporter: Steve Corona
>
> When nesting UDFs, the Hive Query processor takes a large amount of
> time+memory to process the query. For example, I ran something along the
> lines of:
> select trim( trim( trim(trim( trim( trim( trim( trim( trim(column)))))))))
> from test_table;
> This query needs 10GB+ of memory to process before it'll launch the job. The
> amount of memory increases exponentially with each nested UDF.
> Obviously, I am using trim() in this case as a simple example that causes the
> same problem to occur. In my actual use-case I had a bunch of nested
> regexp_replaces.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.