Thanks Edward. But "inline groovy" is available on Hive 13 right? I am using an older version.
Best, Andy On Thu, Apr 3, 2014 at 11:37 AM, Edward Capriolo <edlinuxg...@gmail.com>wrote: > You can write UDF's in groovy now. That pretty much means. You can just > write a quick method inline now. Makese udf reflect much less useful. > > > On Thu, Apr 3, 2014 at 2:22 PM, Andy Srine <andy.sr...@gmail.com> wrote: > >> Thanks Szehon and Peyman, I want to call hashCode() on the UUID object. >> This object is stored in the table as a string, but I can convert it to >> UUID. Thats not the problem. >> >> Basically the question is, how do we call this reflect UDF on methods >> that takes no arguments? How do I do the following using the reflect UDF? >> >> (fromString(uid_str)).hashCode() >> >> Thanks, >> Andy >> >> >> >> >> On Thu, Apr 3, 2014 at 6:18 AM, Peyman Mohajerian <mohaj...@gmail.com>wrote: >> >>> Maybe your intention is the following: >>> reflect("java.util.UUID", "randomUUID") >>> >>> >>> On Thu, Apr 3, 2014 at 2:33 AM, Szehon Ho <sze...@cloudera.com> wrote: >>> >>>> Hi, according to the description of the reflect UDF, you are trying to >>>> call java.util.UUID.hashcode(uidString), which doesnt seem to be an >>>> existing method on either java 6/7. >>>> >>>> http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html#hashCode() >>>> >>>> Thanks >>>> Szehon >>>> >>>> >>>> >>>> >>>> On Wed, Apr 2, 2014 at 2:13 PM, Andy Srine <andy.sr...@gmail.com>wrote: >>>> >>>>> Hi guys, >>>>> >>>>> >>>>> I am trying to use the reflect UDF for an UUID method and am getting >>>>> an exception. I believe this function should be available in java 1.6.0_31 >>>>> the system is running. >>>>> >>>>> >>>>> select reflect("java.util.UUID", "hashCode", uid_str) my_uid, >>>>> >>>>> ... >>>>> >>>>> >>>>> My suspicion is, this is because the hive column I am calling this on >>>>> is a string and not an UUID. So I nested the reflects as shown below to go >>>>> from a string to an UUID first and then to "hashCode" it. >>>>> >>>>> >>>>> reflect("java.util.UUID", "hashCode", reflect("java.util.UUID", >>>>> "fromString", uid_str)) my_uid, >>>>> >>>>> >>>>> In either case, I always get the exception below though the row of >>>>> data it prints has no null for the uid_str column. Any ideas? >>>>> >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:565) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:143) >>>>> >>>>> ... 8 more >>>>> >>>>> Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: >>>>> UDFReflect getMethod >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.udf.generic.GenericUDFReflect.evaluate(GenericUDFReflect.java:164) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.ExprNodeGenericFuncEvaluator.evaluate(ExprNodeGenericFuncEvaluator.java:163) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.KeyWrapperFactory$ListKeyWrapper.getNewKey(KeyWrapperFactory.java:113) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.GroupByOperator.processOp(GroupByOperator.java:794) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:800) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:800) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:83) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474) >>>>> >>>>> at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:800) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:548) >>>>> >>>>> ... 9 more >>>>> >>>>> Caused by: java.lang.NoSuchMethodException: >>>>> java.util.UUID.hashCode(null) >>>>> >>>>> at java.lang.Class.getMethod(Class.java:1605) >>>>> >>>>> at >>>>> org.apache.hadoop.hive.ql.udf.generic.GenericUDFReflect.evaluate(GenericUDFReflect.java:160) >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Andy >>>>> >>>>> >>>>> >>>> >>> >> >> >> -- >> Thanks, >> Andy >> >> > -- Thanks, Andy