That worked! Thanks a ton!
On Wed, Mar 10, 2010 at 5:56 PM, Mafish Liu <[email protected]> wrote: > 2010/3/11 tom kersnick <[email protected]>: > > Tried this: > > > > package com.eharmony.pipeline.analytics.udf; > > > > import org.apache.hadoop.hive.ql.exec.UDF; > > import java.util.Collections; > > > > > > public final class test extends UDF { > > public double evaluate("Double[]" values) { > No " in your code and also try return Double instead of double. > > final Integer len = values.length; > > final Integer half = len / 2; > > return values[half]; > > } > > } > > > > Now it will not compile using Maven: > > > > test.java:[8,27] illegal start of type > > > > test.java:[8,37] ')' expected > > > > test.java:[8,44] ';' expected > > > > Thanks in advance. > > > > /tom > > > > > > > > On Wed, Mar 10, 2010 at 5:06 PM, Zheng Shao <[email protected]> wrote: > >> > >> Try "Double[]". Primitive arrays (like double[], int[]) are not > >> supported yet, because that needs special handling for each of the > >> primitive type. > >> > >> Zheng > >> > >> On Wed, Mar 10, 2010 at 4:55 PM, tom kersnick <[email protected]> > wrote: > >> > Gents, > >> > > >> > Any ideas why this happens? Im using hive 0.50 with hadoop 20.2. > >> > > >> > This is a super simple UDF..... > >> > > >> > Im just taking the length of the values and then dividing by pi. It > >> > keeps > >> > popping up with this error: > >> > > >> > FAILED: Unknown exception: [D cannot be cast to [Ljava.lang.Object; > >> > > >> > Here is my approach: > >> > > >> > > >> > package com.xyz.udf; > >> > > >> > import org.apache.hadoop.hive.ql.exec.UDF; > >> > import java.util.Collections; > >> > > >> > > >> > public final class test extends UDF { > >> > public double evaluate(double[] values) { > >> > final Integer len = values.length; > >> > final Integer pi = len / 3.14159265; > >> > return values[pi]; > >> > } > >> > } > >> > > >> > > >> > hive> list > >> > jars; > >> > hive> add jar /tmp/hive_aux/x-y-z-udf-1.0-SNAPSHOT.jar; > >> > Added /tmp/hive_aux/x-y-z-udf-1.0-SNAPSHOT.jar to class path > >> > hive> create temporary function my_test as 'com.xyz.udf.test'; > >> > OK > >> > Time taken: 0.41 seconds > >> > hive> show > >> > tables; > >> > OK > >> > userpool > >> > test > >> > Time taken: 3.167 seconds > >> > hive> describe userpool; > >> > OK > >> > word string > >> > amount int > >> > Time taken: 0.098 seconds > >> > hive> select my_test(amount) from > >> > userpool; > >> > FAILED: Unknown exception: [D cannot be cast to [Ljava.lang.Object; > >> > hive> describe test; > >> > OK > >> > word string > >> > amount string > >> > Time taken: 0.134 seconds > >> > hive> select my_test(amount) from > >> > test; > >> > FAILED: Unknown exception: [D cannot be cast to [Ljava.lang.Object; > >> > > >> > > >> > Thanks in advance! > >> > > >> > /tom > >> > > >> > >> > >> > >> -- > >> Yours, > >> Zheng > > > > > > > > -- > [email protected] >
