gaoxiong created HIVE-27960:
-------------------------------

             Summary: Invalid function error when using custom udaf
                 Key: HIVE-27960
                 URL: https://issues.apache.org/jira/browse/HIVE-27960
             Project: Hive
          Issue Type: Bug
          Components: Hive
    Affects Versions: 2.3.9
         Environment: Aliyun emr hive 2.3.9
            Reporter: gaoxiong
            Assignee: gaoxiong
             Fix For: 2.3.9


When a permanent udaf used before over() function, hive will throw invalid 
function error.

 

In HIVE-12719 , it fix this issue for hive 3, but it can't work in hive 2. 

 

In hive 2, it should get FunctionInfo from FunctionRegistry before get 
WindowFunctionInfo same to hive 3. Because it will register window function to 
session. Then hive can get WindowFunctionInfo correctly.

 

---------------------------- err detail ----------------------------

register a permanent udaf:

 
{code:java}
create function row_number2 as 
'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFRowNumber'; {code}
execute query in a new cli session:

 

 
{code:java}
select row_number2() over();{code}
blew is error log:

 

 
{code:java}
FAILED: SemanticException Failed to breakup Windowing invocations into Groups. 
At least 1 group must only depend on input columns. Also check for circular 
dependencies.Underlying error: Invalid function 
row_number22023-12-06T10:17:30,348 ERROR [0b7764ce-cde3-49c5-9d32-f96d61b20773 
main] ql.Driver: FAILED: SemanticException Failed to breakup Windowing 
invocations into Groups. At least 1 group must only depend on input columns. 
Also check for circular dependencies.Underlying error: Invalid function 
row_number2org.apache.hadoop.hive.ql.parse.SemanticException: Failed to breakup 
Windowing invocations into Groups. At least 1 group must only depend on input 
columns. Also check for circular dependencies.Underlying error: Invalid 
function row_number2    at 
org.apache.hadoop.hive.ql.parse.WindowingComponentizer.next(WindowingComponentizer.java:97)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genWindowingPlan(SemanticAnalyzer.java:13270)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPostGroupByBodyPlan(SemanticAnalyzer.java:9685)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:9644)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10549)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10427)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genOPTree(SemanticAnalyzer.java:11125)
    at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:481)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:11138)
    at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:286)
    at 
org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:258)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:512)    at 
org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317)    at 
org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457)    at 
org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237)    at 
org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227)    at 
org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233)    at 
org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184)    at 
org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403)    at 
org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:336)    at 
org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:787)    at 
org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)    at 
org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)    at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)   
 at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)    at 
org.apache.hadoop.util.RunJar.run(RunJar.java:239)    at 
org.apache.hadoop.util.RunJar.main(RunJar.java:153) {code}
 

 



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

Reply via email to