phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Taylor <jamestay...@apache.org>
Subject Re: ClassNotFoundException for UDF class
Date Fri, 24 Jul 2015 22:29:06 GMT
I don't believe you'd want to bundle the dependent jars iniside your jar -
I wasn't completely sure if that's what you've done. Also there's a config
you need to enable in your client-side hbase-site.xml to use this feature.
Thanks,
James

On Friday, July 24, 2015, Anchal Agrawal <anchal@yahoo-inc.com> wrote:

> Hi all,
>
> I'm having issues getting a UDF to work. I've followed the instructions
> <http://phoenix.apache.org/udf.html#Creating_Custom_UDFs> and created a
> jar, and I've created a function with the *CREATE FUNCTION *command.
> However, when I use the function in a *SELECT* statement, I get a
> *ClassNotFoundException* for the custom class I wrote. I'm using v4.4.0.
>
> Here's some debugging information:
> 1. The UDF jar includes the dependency jars (phoenix-core, hbase,
> hadoop-common, etc.), in addition to the UDF class itself. There are no
> permission issues with the jar.
> 2. I've tried putting the jar on the local FS, on my custom DFS, and also
> in the HBase dynamic jar dir (as specified in hbase-site.xml).
> 3. I've tried the *CREATE FUNCTION* command without giving the jar path
> (the jar is present in the HBase dynamic jar dir).
> 4. The Phoenix client doesn't report any syntax errors with my *CREATE
> FUNCTION* command I'm using:
> *create function GetValue(VARBINARY) returns UNSIGNED_LONG as
> 'org.apache.phoenix.expression.function.GetValue' using jar 'path_to_jar';*
>
> 5. Here's part of the stack trace for the query *SELECT GetValue(pk) FROM
> "table_name";* (full stack trace here <http://pastebin.com/eu4SmHm8>)
>
>
>
>
>
>
>
>
>
>
> *Error: java.lang.reflect.InvocationTargetException
> (state=,code=0)...Caused by: java.lang.ClassNotFoundException:
> org.apache.phoenix.expression.function.GetValue    at
> java.net.URLClassLoader$1.run(URLClassLoader.java:372)    at
> java.net.URLClassLoader$1.run(URLClassLoader.java:361)    at
> java.security.AccessController.doPrivileged(Native Method)    at
> java.net.URLClassLoader.findClass(URLClassLoader.java:360)    at
> org.apache.hadoop.hbase.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:147)
> at
> org.apache.phoenix.expression.function.UDFExpression.constructUDFFunction(UDFExpression.java:164)
> ... 28 more*
>
> Am I missing something? I've studied the UDF documentation and searched
> around for my issue but to no avail. The *GetValue* class is present in
> the UDF jar, so I'm not sure what the root problem is. I would greatly
> appreciate any help!
>
> Thanks,
> Anchal
>

Mime
View raw message