You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by Vijay <te...@gmail.com> on 2011/07/29 22:55:27 UTC

Problem with non-generic UDAFs and sub queries

Hi, I'm not sure if this is a know problem but when I use a
non-generic UDAF (either the examples under contrib or my own) within
a simple query they work fine but if I use them over a column from a
subquery, execution fails with the exceptions below.

Working query: select myavg(players) from test;
Failing query: select myavg(players) from (select players from test
order by day) tmp;

java.lang.RuntimeException: Error in configuring object
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
	at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:426)
	at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:411)
	at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.lang.reflect.InvocationTargetException
	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.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
	... 5 more
Caused by: java.lang.RuntimeException: Reduce operator initialization failed
	at org.apache.hadoop.hive.ql.exec.ExecReducer.configure(ExecReducer.java:157)
	... 10 more
Caused by: java.lang.RuntimeException: cannot find field value from [0:_col0]
	at org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.getStandardStructFieldRef(ObjectInspectorUtils.java:321)
	at org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector.getStructFieldRef(StandardStructObjectInspector.java:119)
	at org.apache.hadoop.hive.ql.exec.ExprNodeColumnEvaluator.initialize(ExprNodeColumnEvaluator.java:82)
	at org.apache.hadoop.hive.ql.exec.GroupByOperator.initializeOp(GroupByOperator.java:252)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
	at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
	at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:62)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
	at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
	at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:62)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
	at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
	at org.apache.hadoop.hive.ql.exec.ExtractOperator.initializeOp(ExtractOperator.java:40)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
	at org.apache.hadoop.hive.ql.exec.ExecReducer.configure(ExecReducer.java:150)
	... 10 more

Any help is appreciated!

Re: Problem with non-generic UDAFs and sub queries

Posted by Vijay <te...@gmail.com>.
I digged into this more and it doesn't look like this has anything to
do with my own UDAFs. All the built-in UDAFs seem to have the same
problem. The query below always fails with the exception below.

select avg(c) from (select c from test) tmp;

Unless I'm missing something obvious, this seems like a serious bug to me.

Thanks,
Vijay

On Fri, Jul 29, 2011 at 1:55 PM, Vijay <te...@gmail.com> wrote:
> Hi, I'm not sure if this is a know problem but when I use a
> non-generic UDAF (either the examples under contrib or my own) within
> a simple query they work fine but if I use them over a column from a
> subquery, execution fails with the exceptions below.
>
> Working query: select myavg(players) from test;
> Failing query: select myavg(players) from (select players from test
> order by day) tmp;
>
> java.lang.RuntimeException: Error in configuring object
>        at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
>        at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
>        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>        at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:426)
>        at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:411)
>        at org.apache.hadoop.mapred.Child.main(Child.java:170)
> Caused by: java.lang.reflect.InvocationTargetException
>        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.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
>        ... 5 more
> Caused by: java.lang.RuntimeException: Reduce operator initialization failed
>        at org.apache.hadoop.hive.ql.exec.ExecReducer.configure(ExecReducer.java:157)
>        ... 10 more
> Caused by: java.lang.RuntimeException: cannot find field value from [0:_col0]
>        at org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.getStandardStructFieldRef(ObjectInspectorUtils.java:321)
>        at org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector.getStructFieldRef(StandardStructObjectInspector.java:119)
>        at org.apache.hadoop.hive.ql.exec.ExprNodeColumnEvaluator.initialize(ExprNodeColumnEvaluator.java:82)
>        at org.apache.hadoop.hive.ql.exec.GroupByOperator.initializeOp(GroupByOperator.java:252)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
>        at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
>        at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:62)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
>        at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
>        at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:62)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:433)
>        at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:389)
>        at org.apache.hadoop.hive.ql.exec.ExtractOperator.initializeOp(ExtractOperator.java:40)
>        at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:357)
>        at org.apache.hadoop.hive.ql.exec.ExecReducer.configure(ExecReducer.java:150)
>        ... 10 more
>
> Any help is appreciated!
>