You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by Charles Givre <cg...@gmail.com> on 2017/01/27 20:50:25 UTC

Dynamic UDF Registration

I’m having some trouble registering a UDF I wrote.  The UDF was working in previous versions of Drill and now Drill doesn’t seem to recognize it.  When I try to register it I get the following error:

: jdbc:drill:zk=local> create function using jar 'drill-geoip-functions-1.0.jar';
+--------+---------------------------------------------------------------+
|   ok   |                            summary                            |
+--------+---------------------------------------------------------------+
| false  | Jar drill-geoip-functions-1.0.jar does not contain functions  |
+--------+---------------------------------------------------------------+

I do have a drill-module.conf file and here are the contents:
drill.classpath.scanning.packages += "org.apache.drill.contrib.function"
I tried moving this file around and I put a copy in the /src folder as well as the /src/main folder to no avail.  Any suggestions?
Thanks,
— Charles






Re: Dynamic UDF Registration

Posted by Charles Givre <cg...@gmail.com>.
Hi Arina, 
Thank you for your assistance on this.  I’m also having issues with another UDF. This one is an aggregate function and I can’t seem to get Drill to recognize it.  Here’s the repo if you wouldn’t mind taking a look.   https://github.com/cgivre/drill-stats-function <https://github.com/cgivre/drill-stats-function> I wasn’t trying to add this dynamically. 
Thanks,
— C

> On Jan 31, 2017, at 05:59, Arina Yelchiyeva <ar...@gmail.com> wrote:
> 
> Hi Charles,
> 
> yes you can. For example, you can create my.txt in your jar resource folder.
> From code you may load its content using:
> getClass().getClassLoader().getResourceAsStream("my.txt").
> But this will work only for functions loaded during drillbit startup (when
> you add jars in drillbit classpath).
> Won't work for dynamically loaded functions, since these functions have
> custom classloader.
> 
> Kind regards
> Arina
> 
> 
> On Mon, Jan 30, 2017 at 5:18 PM, Charles Givre <cg...@gmail.com> wrote:
> 
>> Hi Arina,
>> Thank you very much for taking a look.  I actually got it to work last
>> night and found that the cause of the error was that I was not initializing
>> the @Workspace parameters correctly.
>> I had another question which I was wondering if you might be able to
>> assist with.  I’m not a Java developer by trade so forgive me if this is a
>> total n00b question, but obviously, I don’t want to hard-code the path to
>> that database.  Is there an easy way that I can include it the resources
>> file, have it bundled with the JAR and then include a relative path, or
>> something like that?
>> Thanks,
>> — C
>> 
>> 
>> 
>>> On Jan 30, 2017, at 05:25, Arina Yelchiyeva <ar...@gmail.com>
>> wrote:
>>> 
>>> Hi Charles,
>>> 
>>> 1. drill-module.conf: should be the following:
>>> *drill.classpath.scanning.packages
>>> += "org.apache.drill.contrib.function"*
>>> 2. when I have built the jars and tried to register functions, I got the
>>> following error: org.apache.drill.common.exceptions.
>> DrillRuntimeException:
>>> Unexpected class load failure while attempting to load Function Registry
>>> (com.maxmind.geoip2.DatabaseReader), so I have copied two jars into
>>> <drill>/jars
>>> folder: maxmind-db-1.2.1.jar and geoip2-2.8.0.jar and function seems to
>>> work fine (well, could not read DB but it's expected since you have
>>> hard-coded your local path in your function code: java.io.File database =
>>> new
>>> java.io.File("/Users/cgivre/OneDrive/github/drillworkshop/
>> GeoLite2/GeoLite2-City.mmdb");).
>>> I guess these jars should be present in drill classpath at startup
>> despite
>>> the the way you register functions (dynamic or not).
>>> 
>>> 0: jdbc:drill:zk=local> create function using jar
>>> 'drill-geoip-functions-1.0.jar';
>>> +----+---------+
>>> | ok | summary |
>>> +----+---------+
>>> | true | The following UDFs in jar drill-geoip-functions-1.0.jar have
>> been
>>> registered:
>>> [getcountryname(VARCHAR-OPTIONAL), getcityname(VARCHAR-REQUIRED)] |
>>> +----+---------+
>>> 1 row selected (1.083 seconds)
>>> 
>>> 0: jdbc:drill:zk=local> select getCityName('A') from sys.version;
>>> IOException encountered:  Could not read MaxMind DBIOException
>> encountered:
>>> Could not read MaxMind DB+----------+
>>> |  EXPR$0  |
>>> +----------+
>>> | Unknown  |
>>> +----------+
>>> 
>>> 
>>> Kind regards
>>> Arina
>>> 
>>> 
>>> On Sun, Jan 29, 2017 at 2:41 AM, Charles Givre <cg...@gmail.com> wrote:
>>> 
>>>> HI Arina,
>>>> I’m still getting weird errors.
>>>> 
>>>> Here’s my UDF: https://github.com/cgivre/drill-geoip-functions <
>>>> https://github.com/cgivre/drill-geoip-functions>
>>>> 
>>>> I build it using: mvn clean package -DskipTests and it builds fine.  I
>>>> copy the .jar files it creates to <drill>/jars/3rdparty, but when I try
>> to
>>>> execute a query, I get:
>>>> 
>>>> Query Failed: An Error Occurred
>>>> org.apache.drill.common.exceptions.UserRemoteException: VALIDATION
>> ERROR:
>>>> From line 1, column 19 to line 1, column 42: No match found for function
>>>> signature getCityName() SQL Query null [Error Id:
>> deb83448-db82-4351-b95d-f183c25efb0b
>>>> on charless-mbp-2.fios-router.home:31010]
>>>> 
>>>> Would you mind taking a quick look at my code?  I have a feeling this is
>>>> something simple and obvious, like a wrong path somewhere.  I’ve written
>>>> other UDFs before and gotten them to work, so I’m a little stuck.
>>>> Thanks,
>>>> — Charles
>>>> 
>>>> 
>>>> 
>>>>> On Jan 28, 2017, at 08:22, Arina Yelchiyeva <
>> arina.yelchiyeva@gmail.com>
>>>> wrote:
>>>>> 
>>>>> Hi Charles,
>>>>> 
>>>>> drill-module.conf file should be placed in src/main/resources folder.
>>>>> Example:
>>>>> https://github.com/arina-ielchiieva/drillUDF/blob/
>>>> master/src/main/resources/drill-module.conf
>>>>> 
>>>>> 
>>>>> Kind regards
>>>>> Arina
>>>>> 
>>>>> On Fri, Jan 27, 2017 at 10:50 PM, Charles Givre <cg...@gmail.com>
>>>> wrote:
>>>>> 
>>>>>> I’m having some trouble registering a UDF I wrote.  The UDF was
>> working
>>>> in
>>>>>> previous versions of Drill and now Drill doesn’t seem to recognize it.
>>>>>> When I try to register it I get the following error:
>>>>>> 
>>>>>> : jdbc:drill:zk=local> create function using jar
>>>>>> 'drill-geoip-functions-1.0.jar';
>>>>>> +--------+--------------------------------------------------
>>>> -------------+
>>>>>> |   ok   |                            summary
>>>> |
>>>>>> +--------+--------------------------------------------------
>>>> -------------+
>>>>>> | false  | Jar drill-geoip-functions-1.0.jar does not contain
>>>> functions  |
>>>>>> +--------+--------------------------------------------------
>>>> -------------+
>>>>>> 
>>>>>> I do have a drill-module.conf file and here are the contents:
>>>>>> drill.classpath.scanning.packages += "org.apache.drill.contrib.
>>>> function"
>>>>>> I tried moving this file around and I put a copy in the /src folder as
>>>>>> well as the /src/main folder to no avail.  Any suggestions?
>>>>>> Thanks,
>>>>>> — Charles
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> 


Re: Dynamic UDF Registration

Posted by Arina Yelchiyeva <ar...@gmail.com>.
Hi Charles,

yes you can. For example, you can create my.txt in your jar resource folder.
From code you may load its content using:
getClass().getClassLoader().getResourceAsStream("my.txt").
But this will work only for functions loaded during drillbit startup (when
you add jars in drillbit classpath).
Won't work for dynamically loaded functions, since these functions have
custom classloader.

Kind regards
Arina


On Mon, Jan 30, 2017 at 5:18 PM, Charles Givre <cg...@gmail.com> wrote:

> Hi Arina,
> Thank you very much for taking a look.  I actually got it to work last
> night and found that the cause of the error was that I was not initializing
> the @Workspace parameters correctly.
> I had another question which I was wondering if you might be able to
> assist with.  I’m not a Java developer by trade so forgive me if this is a
> total n00b question, but obviously, I don’t want to hard-code the path to
> that database.  Is there an easy way that I can include it the resources
> file, have it bundled with the JAR and then include a relative path, or
> something like that?
> Thanks,
> — C
>
>
>
> > On Jan 30, 2017, at 05:25, Arina Yelchiyeva <ar...@gmail.com>
> wrote:
> >
> > Hi Charles,
> >
> > 1. drill-module.conf: should be the following:
> > *drill.classpath.scanning.packages
> > += "org.apache.drill.contrib.function"*
> > 2. when I have built the jars and tried to register functions, I got the
> > following error: org.apache.drill.common.exceptions.
> DrillRuntimeException:
> > Unexpected class load failure while attempting to load Function Registry
> > (com.maxmind.geoip2.DatabaseReader), so I have copied two jars into
> > <drill>/jars
> > folder: maxmind-db-1.2.1.jar and geoip2-2.8.0.jar and function seems to
> > work fine (well, could not read DB but it's expected since you have
> > hard-coded your local path in your function code: java.io.File database =
> > new
> > java.io.File("/Users/cgivre/OneDrive/github/drillworkshop/
> GeoLite2/GeoLite2-City.mmdb");).
> > I guess these jars should be present in drill classpath at startup
> despite
> > the the way you register functions (dynamic or not).
> >
> > 0: jdbc:drill:zk=local> create function using jar
> > 'drill-geoip-functions-1.0.jar';
> > +----+---------+
> > | ok | summary |
> > +----+---------+
> > | true | The following UDFs in jar drill-geoip-functions-1.0.jar have
> been
> > registered:
> > [getcountryname(VARCHAR-OPTIONAL), getcityname(VARCHAR-REQUIRED)] |
> > +----+---------+
> > 1 row selected (1.083 seconds)
> >
> > 0: jdbc:drill:zk=local> select getCityName('A') from sys.version;
> > IOException encountered:  Could not read MaxMind DBIOException
> encountered:
> > Could not read MaxMind DB+----------+
> > |  EXPR$0  |
> > +----------+
> > | Unknown  |
> > +----------+
> >
> >
> > Kind regards
> > Arina
> >
> >
> > On Sun, Jan 29, 2017 at 2:41 AM, Charles Givre <cg...@gmail.com> wrote:
> >
> >> HI Arina,
> >> I’m still getting weird errors.
> >>
> >> Here’s my UDF: https://github.com/cgivre/drill-geoip-functions <
> >> https://github.com/cgivre/drill-geoip-functions>
> >>
> >> I build it using: mvn clean package -DskipTests and it builds fine.  I
> >> copy the .jar files it creates to <drill>/jars/3rdparty, but when I try
> to
> >> execute a query, I get:
> >>
> >> Query Failed: An Error Occurred
> >> org.apache.drill.common.exceptions.UserRemoteException: VALIDATION
> ERROR:
> >> From line 1, column 19 to line 1, column 42: No match found for function
> >> signature getCityName() SQL Query null [Error Id:
> deb83448-db82-4351-b95d-f183c25efb0b
> >> on charless-mbp-2.fios-router.home:31010]
> >>
> >> Would you mind taking a quick look at my code?  I have a feeling this is
> >> something simple and obvious, like a wrong path somewhere.  I’ve written
> >> other UDFs before and gotten them to work, so I’m a little stuck.
> >> Thanks,
> >> — Charles
> >>
> >>
> >>
> >>> On Jan 28, 2017, at 08:22, Arina Yelchiyeva <
> arina.yelchiyeva@gmail.com>
> >> wrote:
> >>>
> >>> Hi Charles,
> >>>
> >>> drill-module.conf file should be placed in src/main/resources folder.
> >>> Example:
> >>> https://github.com/arina-ielchiieva/drillUDF/blob/
> >> master/src/main/resources/drill-module.conf
> >>>
> >>>
> >>> Kind regards
> >>> Arina
> >>>
> >>> On Fri, Jan 27, 2017 at 10:50 PM, Charles Givre <cg...@gmail.com>
> >> wrote:
> >>>
> >>>> I’m having some trouble registering a UDF I wrote.  The UDF was
> working
> >> in
> >>>> previous versions of Drill and now Drill doesn’t seem to recognize it.
> >>>> When I try to register it I get the following error:
> >>>>
> >>>> : jdbc:drill:zk=local> create function using jar
> >>>> 'drill-geoip-functions-1.0.jar';
> >>>> +--------+--------------------------------------------------
> >> -------------+
> >>>> |   ok   |                            summary
> >>  |
> >>>> +--------+--------------------------------------------------
> >> -------------+
> >>>> | false  | Jar drill-geoip-functions-1.0.jar does not contain
> >> functions  |
> >>>> +--------+--------------------------------------------------
> >> -------------+
> >>>>
> >>>> I do have a drill-module.conf file and here are the contents:
> >>>> drill.classpath.scanning.packages += "org.apache.drill.contrib.
> >> function"
> >>>> I tried moving this file around and I put a copy in the /src folder as
> >>>> well as the /src/main folder to no avail.  Any suggestions?
> >>>> Thanks,
> >>>> — Charles
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>
> >>
>
>

Re: Dynamic UDF Registration

Posted by Charles Givre <cg...@gmail.com>.
Hi Arina, 
Thank you very much for taking a look.  I actually got it to work last night and found that the cause of the error was that I was not initializing the @Workspace parameters correctly.  
I had another question which I was wondering if you might be able to assist with.  I’m not a Java developer by trade so forgive me if this is a total n00b question, but obviously, I don’t want to hard-code the path to that database.  Is there an easy way that I can include it the resources file, have it bundled with the JAR and then include a relative path, or something like that?
Thanks,
— C



> On Jan 30, 2017, at 05:25, Arina Yelchiyeva <ar...@gmail.com> wrote:
> 
> Hi Charles,
> 
> 1. drill-module.conf: should be the following:
> *drill.classpath.scanning.packages
> += "org.apache.drill.contrib.function"*
> 2. when I have built the jars and tried to register functions, I got the
> following error: org.apache.drill.common.exceptions.DrillRuntimeException:
> Unexpected class load failure while attempting to load Function Registry
> (com.maxmind.geoip2.DatabaseReader), so I have copied two jars into
> <drill>/jars
> folder: maxmind-db-1.2.1.jar and geoip2-2.8.0.jar and function seems to
> work fine (well, could not read DB but it's expected since you have
> hard-coded your local path in your function code: java.io.File database =
> new
> java.io.File("/Users/cgivre/OneDrive/github/drillworkshop/GeoLite2/GeoLite2-City.mmdb");).
> I guess these jars should be present in drill classpath at startup despite
> the the way you register functions (dynamic or not).
> 
> 0: jdbc:drill:zk=local> create function using jar
> 'drill-geoip-functions-1.0.jar';
> +----+---------+
> | ok | summary |
> +----+---------+
> | true | The following UDFs in jar drill-geoip-functions-1.0.jar have been
> registered:
> [getcountryname(VARCHAR-OPTIONAL), getcityname(VARCHAR-REQUIRED)] |
> +----+---------+
> 1 row selected (1.083 seconds)
> 
> 0: jdbc:drill:zk=local> select getCityName('A') from sys.version;
> IOException encountered:  Could not read MaxMind DBIOException encountered:
> Could not read MaxMind DB+----------+
> |  EXPR$0  |
> +----------+
> | Unknown  |
> +----------+
> 
> 
> Kind regards
> Arina
> 
> 
> On Sun, Jan 29, 2017 at 2:41 AM, Charles Givre <cg...@gmail.com> wrote:
> 
>> HI Arina,
>> I’m still getting weird errors.
>> 
>> Here’s my UDF: https://github.com/cgivre/drill-geoip-functions <
>> https://github.com/cgivre/drill-geoip-functions>
>> 
>> I build it using: mvn clean package -DskipTests and it builds fine.  I
>> copy the .jar files it creates to <drill>/jars/3rdparty, but when I try to
>> execute a query, I get:
>> 
>> Query Failed: An Error Occurred
>> org.apache.drill.common.exceptions.UserRemoteException: VALIDATION ERROR:
>> From line 1, column 19 to line 1, column 42: No match found for function
>> signature getCityName() SQL Query null [Error Id: deb83448-db82-4351-b95d-f183c25efb0b
>> on charless-mbp-2.fios-router.home:31010]
>> 
>> Would you mind taking a quick look at my code?  I have a feeling this is
>> something simple and obvious, like a wrong path somewhere.  I’ve written
>> other UDFs before and gotten them to work, so I’m a little stuck.
>> Thanks,
>> — Charles
>> 
>> 
>> 
>>> On Jan 28, 2017, at 08:22, Arina Yelchiyeva <ar...@gmail.com>
>> wrote:
>>> 
>>> Hi Charles,
>>> 
>>> drill-module.conf file should be placed in src/main/resources folder.
>>> Example:
>>> https://github.com/arina-ielchiieva/drillUDF/blob/
>> master/src/main/resources/drill-module.conf
>>> 
>>> 
>>> Kind regards
>>> Arina
>>> 
>>> On Fri, Jan 27, 2017 at 10:50 PM, Charles Givre <cg...@gmail.com>
>> wrote:
>>> 
>>>> I’m having some trouble registering a UDF I wrote.  The UDF was working
>> in
>>>> previous versions of Drill and now Drill doesn’t seem to recognize it.
>>>> When I try to register it I get the following error:
>>>> 
>>>> : jdbc:drill:zk=local> create function using jar
>>>> 'drill-geoip-functions-1.0.jar';
>>>> +--------+--------------------------------------------------
>> -------------+
>>>> |   ok   |                            summary
>>  |
>>>> +--------+--------------------------------------------------
>> -------------+
>>>> | false  | Jar drill-geoip-functions-1.0.jar does not contain
>> functions  |
>>>> +--------+--------------------------------------------------
>> -------------+
>>>> 
>>>> I do have a drill-module.conf file and here are the contents:
>>>> drill.classpath.scanning.packages += "org.apache.drill.contrib.
>> function"
>>>> I tried moving this file around and I put a copy in the /src folder as
>>>> well as the /src/main folder to no avail.  Any suggestions?
>>>> Thanks,
>>>> — Charles
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>> 
>> 


Re: Dynamic UDF Registration

Posted by Arina Yelchiyeva <ar...@gmail.com>.
Hi Charles,

1. drill-module.conf: should be the following:
*drill.classpath.scanning.packages
+= "org.apache.drill.contrib.function"*
2. when I have built the jars and tried to register functions, I got the
following error: org.apache.drill.common.exceptions.DrillRuntimeException:
Unexpected class load failure while attempting to load Function Registry
(com.maxmind.geoip2.DatabaseReader), so I have copied two jars into
<drill>/jars
folder: maxmind-db-1.2.1.jar and geoip2-2.8.0.jar and function seems to
work fine (well, could not read DB but it's expected since you have
hard-coded your local path in your function code: java.io.File database =
new
java.io.File("/Users/cgivre/OneDrive/github/drillworkshop/GeoLite2/GeoLite2-City.mmdb");).
I guess these jars should be present in drill classpath at startup despite
the the way you register functions (dynamic or not).

0: jdbc:drill:zk=local> create function using jar
'drill-geoip-functions-1.0.jar';
+----+---------+
| ok | summary |
+----+---------+
| true | The following UDFs in jar drill-geoip-functions-1.0.jar have been
registered:
[getcountryname(VARCHAR-OPTIONAL), getcityname(VARCHAR-REQUIRED)] |
+----+---------+
1 row selected (1.083 seconds)

0: jdbc:drill:zk=local> select getCityName('A') from sys.version;
IOException encountered:  Could not read MaxMind DBIOException encountered:
 Could not read MaxMind DB+----------+
|  EXPR$0  |
+----------+
| Unknown  |
+----------+


Kind regards
Arina


On Sun, Jan 29, 2017 at 2:41 AM, Charles Givre <cg...@gmail.com> wrote:

> HI Arina,
> I’m still getting weird errors.
>
> Here’s my UDF: https://github.com/cgivre/drill-geoip-functions <
> https://github.com/cgivre/drill-geoip-functions>
>
> I build it using: mvn clean package -DskipTests and it builds fine.  I
> copy the .jar files it creates to <drill>/jars/3rdparty, but when I try to
> execute a query, I get:
>
> Query Failed: An Error Occurred
> org.apache.drill.common.exceptions.UserRemoteException: VALIDATION ERROR:
> From line 1, column 19 to line 1, column 42: No match found for function
> signature getCityName() SQL Query null [Error Id: deb83448-db82-4351-b95d-f183c25efb0b
> on charless-mbp-2.fios-router.home:31010]
>
> Would you mind taking a quick look at my code?  I have a feeling this is
> something simple and obvious, like a wrong path somewhere.  I’ve written
> other UDFs before and gotten them to work, so I’m a little stuck.
> Thanks,
> — Charles
>
>
>
> > On Jan 28, 2017, at 08:22, Arina Yelchiyeva <ar...@gmail.com>
> wrote:
> >
> > Hi Charles,
> >
> > drill-module.conf file should be placed in src/main/resources folder.
> > Example:
> > https://github.com/arina-ielchiieva/drillUDF/blob/
> master/src/main/resources/drill-module.conf
> >
> >
> > Kind regards
> > Arina
> >
> > On Fri, Jan 27, 2017 at 10:50 PM, Charles Givre <cg...@gmail.com>
> wrote:
> >
> >> I’m having some trouble registering a UDF I wrote.  The UDF was working
> in
> >> previous versions of Drill and now Drill doesn’t seem to recognize it.
> >> When I try to register it I get the following error:
> >>
> >> : jdbc:drill:zk=local> create function using jar
> >> 'drill-geoip-functions-1.0.jar';
> >> +--------+--------------------------------------------------
> -------------+
> >> |   ok   |                            summary
>   |
> >> +--------+--------------------------------------------------
> -------------+
> >> | false  | Jar drill-geoip-functions-1.0.jar does not contain
> functions  |
> >> +--------+--------------------------------------------------
> -------------+
> >>
> >> I do have a drill-module.conf file and here are the contents:
> >> drill.classpath.scanning.packages += "org.apache.drill.contrib.
> function"
> >> I tried moving this file around and I put a copy in the /src folder as
> >> well as the /src/main folder to no avail.  Any suggestions?
> >> Thanks,
> >> — Charles
> >>
> >>
> >>
> >>
> >>
> >>
>
>

Re: Dynamic UDF Registration

Posted by Charles Givre <cg...@gmail.com>.
HI Arina, 
I’m still getting weird errors.  

Here’s my UDF: https://github.com/cgivre/drill-geoip-functions <https://github.com/cgivre/drill-geoip-functions>

I build it using: mvn clean package -DskipTests and it builds fine.  I copy the .jar files it creates to <drill>/jars/3rdparty, but when I try to execute a query, I get:

Query Failed: An Error Occurred 
org.apache.drill.common.exceptions.UserRemoteException: VALIDATION ERROR: From line 1, column 19 to line 1, column 42: No match found for function signature getCityName() SQL Query null [Error Id: deb83448-db82-4351-b95d-f183c25efb0b on charless-mbp-2.fios-router.home:31010]

Would you mind taking a quick look at my code?  I have a feeling this is something simple and obvious, like a wrong path somewhere.  I’ve written other UDFs before and gotten them to work, so I’m a little stuck.
Thanks,
— Charles



> On Jan 28, 2017, at 08:22, Arina Yelchiyeva <ar...@gmail.com> wrote:
> 
> Hi Charles,
> 
> drill-module.conf file should be placed in src/main/resources folder.
> Example:
> https://github.com/arina-ielchiieva/drillUDF/blob/master/src/main/resources/drill-module.conf
> 
> 
> Kind regards
> Arina
> 
> On Fri, Jan 27, 2017 at 10:50 PM, Charles Givre <cg...@gmail.com> wrote:
> 
>> I’m having some trouble registering a UDF I wrote.  The UDF was working in
>> previous versions of Drill and now Drill doesn’t seem to recognize it.
>> When I try to register it I get the following error:
>> 
>> : jdbc:drill:zk=local> create function using jar
>> 'drill-geoip-functions-1.0.jar';
>> +--------+---------------------------------------------------------------+
>> |   ok   |                            summary                            |
>> +--------+---------------------------------------------------------------+
>> | false  | Jar drill-geoip-functions-1.0.jar does not contain functions  |
>> +--------+---------------------------------------------------------------+
>> 
>> I do have a drill-module.conf file and here are the contents:
>> drill.classpath.scanning.packages += "org.apache.drill.contrib.function"
>> I tried moving this file around and I put a copy in the /src folder as
>> well as the /src/main folder to no avail.  Any suggestions?
>> Thanks,
>> — Charles
>> 
>> 
>> 
>> 
>> 
>> 


Re: Dynamic UDF Registration

Posted by Arina Yelchiyeva <ar...@gmail.com>.
Hi Charles,

drill-module.conf file should be placed in src/main/resources folder.
Example:
https://github.com/arina-ielchiieva/drillUDF/blob/master/src/main/resources/drill-module.conf


Kind regards
Arina

On Fri, Jan 27, 2017 at 10:50 PM, Charles Givre <cg...@gmail.com> wrote:

> I’m having some trouble registering a UDF I wrote.  The UDF was working in
> previous versions of Drill and now Drill doesn’t seem to recognize it.
> When I try to register it I get the following error:
>
> : jdbc:drill:zk=local> create function using jar
> 'drill-geoip-functions-1.0.jar';
> +--------+---------------------------------------------------------------+
> |   ok   |                            summary                            |
> +--------+---------------------------------------------------------------+
> | false  | Jar drill-geoip-functions-1.0.jar does not contain functions  |
> +--------+---------------------------------------------------------------+
>
> I do have a drill-module.conf file and here are the contents:
> drill.classpath.scanning.packages += "org.apache.drill.contrib.function"
> I tried moving this file around and I put a copy in the /src folder as
> well as the /src/main folder to no avail.  Any suggestions?
> Thanks,
> — Charles
>
>
>
>
>
>