Created 02-11-2016 04:01 AM
on Sandbox 2.3.2, the following hive query errors out:
SELECT reflect("java.lang.String", "valueOf", 1), reflect("java.lang.String", "isEmpty"), reflect("java.lang.Math", "max", 2, 3), reflect("java.lang.Math", "min", 2, 3), reflect("java.lang.Math", "round", 2.5), reflect("java.lang.Math", "exp", 1.0), reflect("java.lang.Math", "floor", 1.9) FROM hyhelp LIMIT 1;
error message is:
Error while compiling statement: FAILED: SemanticException UDF reflect is not allowed
hiveserver2.log shows:
2016-02-10 22:51:23,461 ERROR [HiveServer2-Handler-Pool: Thread-46]: ql.Driver (SessionState.java:printError(960)) - FAILED: SemanticException UDF reflect is not allowed org.apache.hadoop.hive.ql.parse.SemanticException: UDF reflect is not allowed at org.apache.hadoop.hive.ql.exec.Registry.getFunctionInfo(Registry.java:245) at org.apache.hadoop.hive.ql.exec.FunctionRegistry.getFunctionInfo(FunctionRegistry.java:463) at org.apache.hadoop.hive.ql.exec.FunctionRegistry.impliesOrder(FunctionRegistry.java:1521) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.doPhase1GetAllAggregations(SemanticAnalyzer.java:530) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.doPhase1GetAggregationsFromSelect(SemanticAnalyzer.java:465) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.doPhase1(SemanticAnalyzer.java:1145) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.doPhase1(SemanticAnalyzer.java:1415) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.doPhase1(SemanticAnalyzer.java:1415) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genResolvedParseTree(SemanticAnalyzer.java:10048) at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10106) at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:211) at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:227) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:424)
....
Is this a configuration issue or there are jar files missing?
Thanks
Created 02-11-2016 08:23 AM
Hi @Herman Yu, on my Sandbox, also HDP-2.3.2 it works, I only changed table name:
hive> SELECT reflect("java.lang.String", "valueOf", 1), reflect("java.lang.String", "isEmpty"), reflect("java.lang.Math", "max", 2, 3), reflect("java.lang.Math", "min", 2, 3), reflect("java.lang.Math", "round", 2.5), reflect("java.lang.Math", "exp", 1.0), reflect("java.lang.Math", "floor", 1.9) FROM st2 limit 1; OK 1 true 3 2 3 2.718281828459045 1.0 Time taken: 1.97 seconds, Fetched: 1 row(s)
Do other Hive commands and scripts work? Can you try reflect one by one, or, if you copy/pasted the command from somewhere try typing the first reflect.
Created 02-11-2016 08:23 AM
Hi @Herman Yu, on my Sandbox, also HDP-2.3.2 it works, I only changed table name:
hive> SELECT reflect("java.lang.String", "valueOf", 1), reflect("java.lang.String", "isEmpty"), reflect("java.lang.Math", "max", 2, 3), reflect("java.lang.Math", "min", 2, 3), reflect("java.lang.Math", "round", 2.5), reflect("java.lang.Math", "exp", 1.0), reflect("java.lang.Math", "floor", 1.9) FROM st2 limit 1; OK 1 true 3 2 3 2.718281828459045 1.0 Time taken: 1.97 seconds, Fetched: 1 row(s)
Do other Hive commands and scripts work? Can you try reflect one by one, or, if you copy/pasted the command from somewhere try typing the first reflect.
Created on 02-12-2016 03:48 AM - edited 08-19-2019 01:46 AM
It also works with standard Hue-2.6.1 packaged with HDP-2.3.4 (that's the only one I can try; it should also work with Hue coming with 2.3.2 because it's the same version), I tried:
SELECT reflect("java.lang.Math","exp",2.0), reflect("java.lang.Math","hypot",3.0,4.0) from t2 limit 1;
Created 02-11-2016 07:24 PM
Does not work for me either.
Created 02-12-2016 01:04 AM
Thanks, I think it is a configuration issue. it doesn't work with a customized Hue I installed, doesn't work with Ambari Hive view either, but does work with Hive CLI. I found a walk-around for now, will figure out the configurations later when have time.
thanks.
Created 02-12-2016 06:33 PM
I am still unable to get this to work. All I am doing is trying to run the query, is there something I need to do in order to get this to work?