You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hive.apache.org by David Lee <se...@gmail.com> on 2013/03/19 01:00:10 UTC

Use Hive reflect() method to call non-static JDK fuctions

It's relatively straight forward to call static functions in JDK using
reflect.  For example,

select reflect("java.lang.Math", "max", 2, 3) from mytable limit 1;

However,  how do I use reflect to call non-static functions (e.g.,
indexOf() method in java.lang.String class)?
None of the following usage of reflect is correct.  Assuming that mytable
has column called text.

select text, reflect('java.lang.String', 'indexOf', 'school
today'), reflect('java.lang.String', 'indexOf', text, 'school
today'), reflect('java.lang.String', 'indexOf', 'school today', text)
from mytable
limit 1;

Re: Use Hive reflect() method to call non-static JDK fuctions

Posted by Navis류승우 <na...@nexr.com>.
It's implemented in trunk, named as reflect2.

https://issues.apache.org/jira/browse/HIVE-4025

2013/3/19 David Lee <se...@gmail.com>:
>
>
> It's relatively straight forward to call static functions in JDK using
> reflect.  For example,
>
> select reflect("java.lang.Math", "max", 2, 3) from mytable limit 1;
>
> However,  how do I use reflect to call non-static functions (e.g., indexOf()
> method in java.lang.String class)?
> None of the following usage of reflect is correct.  Assuming that mytable
> has column called text.
>
> select text, reflect('java.lang.String', 'indexOf', 'school today'),
> reflect('java.lang.String', 'indexOf', text, 'school today'),
> reflect('java.lang.String', 'indexOf', 'school today', text)
> from mytable
> limit 1;
>
>