Hey Abdel, I renamed it due to your previous hint with the static subclass. But the SQL Commands still returns: 0: jdbc:drill:> SELECT myintadd(CAST(position_id AS int),CAST(store_id AS int)) FROM cp.`employee.json`; Error: VALIDATION ERROR: From line 1, column 8 to line 1, column 63: No match found for function signature myintadd(<NUMERIC>, <NUMERIC>)
So this has to be something wrong with my drill setup? All I do is to start my drillbit with drillbit.sh start (or restart) and then start drill-conf where the conf/drill-override.conf contains: drill.exec: { cluster-id: "drillbits1", zk.connect: "localhost:2181" } There’s one other thing that seems strange to me with my setup: Although I set the loglevel in conf/logback.xml to trace the drillbit.log file does not show any trace outputs. Am I doing something wrong with my setup? Thanks Julian > Am 20.05.2016 um 20:13 schrieb Abdel Hakim Deneche <adene...@maprtech.com>: > > You defined your function as myintadd: > > > @FunctionTemplate(name = "*myintadd*", scope ... > > > The following query worked fine for me: > > SELECT *myintadd*(CAST(position_id AS int),CAST(store_id AS int)) FROM >> cp.`employee.json`; > > > Thanks > > > > > > On Fri, May 20, 2016 at 10:17 AM, Julian Feinauer <julian.feina...@web.de> > wrote: > >> Dear Jacques, >> Dear Abdel, >> >> thanks for your kind help. >> >> jar tf drillUDF-1.0-SNAPSHOT.jar returns: >> >> META-INF/ >> META-INF/MANIFEST.MF >> org/ >> org/apache/ >> org/apache/drill/ >> org/apache/drill/contrib/ >> org/apache/drill/contrib/function/ >> org/julian/ >> drill-module.conf >> IntIntAdd.class >> org/apache/drill/contrib/function/IntIntAdd.class >> org/julian/IntIntAdd$myintadd.class >> org/julian/IntIntAdd.class >> org/julian/IntIntAdd.java >> META-INF/maven/ >> META-INF/maven/julian.test/ >> META-INF/maven/julian.test/drillUDF/ >> META-INF/maven/julian.test/drillUDF/pom.xml >> META-INF/maven/julian.test/drillUDF/pom.properties >> >> And jar tf drillUDF-1.0-SNAPSHOT-sources.jar returns >> META-INF/ >> META-INF/MANIFEST.MF >> org/ >> org/apache/ >> org/apache/drill/ >> org/apache/drill/contrib/ >> org/apache/drill/contrib/function/ >> org/julian/ >> org/julian/IntIntAdd.java >> drill-module.conf >> >> so the drill-module.conf is in both roots. >> >> @Abdel: >> How or where can I share the jar files with you? >> >> Best regards >> Julian >> >>> Am 20.05.2016 um 17:31 schrieb Jacques Nadeau <jacq...@dremio.com>: >>> >>> Can you run jar tf myudf.jar against your jar files? Since Drill is not >>> detecting the jar file, we need to resolve that first. The >>> drill-module.conf must be in the root of each jar file that should be >>> included. Lets start by verifying that. >>> >>> -- >>> Jacques Nadeau >>> CTO and Co-Founder, Dremio >>> >>> On Fri, May 20, 2016 at 6:08 AM, Julian Feinauer <julian.feina...@web.de >>> >>> wrote: >>> >>>> Dear all, >>>> >>>> thank you very much for all your replies. >>>> I tried everything but it is still not working. >>>> >>>> 1. I copy both files (classes and sources) in the /jars/3rdparty >> directory >>>> 2. I restarted the drillbit after this (I use only one drillbit and >>>> drill-conf both running on my local machine) >>>> 3. I changed the class to a static subclass >>>> 4. I have the drill-module.conf in my ressources >>>> 4. The error appears in the drillbit.log as soon as i call the udf >> because >>>> it is not recognized by drill. >>>> On startup drillbit.log states all the packages and jars that are >> scanned >>>> and my custom jar is not listed there. >>>> Therefore I think it is a problem with the class loader or something >>>> related? >>>> >>>> Could this be possible? >>>> >>>> Greetings >>>> Julian >>>> >>>>> Am 20.05.2016 um 14:36 schrieb Tugdual Grall <tugd...@gmail.com>: >>>>> >>>>> Hi >>>>> >>>>> Be sure you deploy on each nodes, 2 jars: >>>>> - the jar containing the classes >>>>> - the jar contains the sources >>>>> >>>>> The POM.xml in the simple function examples contains the maven >>>>> configuration to generate these 2 files, be sure you have the same in >>>> your >>>>> project: >>>>> >>>> >> https://github.com/tgrall/drill-simple-mask-function/blob/master/pom.xml#L24-L37 >>>>> >>>>> and you have restarted the drillbit >>>>> >>>>> Regards >>>>> Tug >>>>> @tgrall >>>>> >>>>> >>>>> >>>>> On Fri, May 20, 2016 at 12:34 AM, Abdel Hakim Deneche < >>>> adene...@maprtech.com >>>>>> wrote: >>>>> >>>>>> the example I gave you was incomplete, here is what I meant to send: >>>>>> >>>>>> public class MyUDF { >>>>>> >>>>>> @FunctionTemplate(name = „myaddints", scope = FunctionTemplate. >>>>>> FunctionScope.SIMPLE, nulls = >>>>>> FunctionTemplate.NullHandling.NULL_IF_NULL) >>>>>> public *static *class IntIntAdd implements DrillSimpleFunc { >>>>>> ... >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> >>>>>> On Thu, May 19, 2016 at 3:33 PM, Abdel Hakim Deneche < >>>>>> adene...@maprtech.com> >>>>>> wrote: >>>>>> >>>>>>> Hey Julian, >>>>>>> >>>>>>> one more thing you could try out: declare the UDF as a static class >>>>>> inside >>>>>>> another class: >>>>>>> >>>>>>> public class MyUDF { >>>>>>> >>>>>>> @FunctionTemplate(name = „myaddints", scope = FunctionTemplate. >>>>>>> FunctionScope.SIMPLE, nulls = FunctionTemplate.NullHandling. >>>>>>> NULL_IF_NULL) >>>>>>> public class IntIntAdd implements DrillSimpleFunc { >>>>>>> ... >>>>>>> } >>>>>>> >>>>>>> } >>>>>>> >>>>>>> Take a look at the following page to see an examples of UDFs: >>>>>>> http://drill.apache.org/docs/custom-function-interfaces/ >>>>>>> >>>>>>> If this doesn't work check the drillbit log, it should print an error >>>>>>> message when it's starting up if something's wrong with your UDF. >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> >>>>>>> On Thu, May 19, 2016 at 3:31 AM, Julian Feinauer < >>>> julian.feina...@web.de >>>>>>> >>>>>>> wrote: >>>>>>> >>>>>>>> Dear folks, >>>>>>>> >>>>>>>> I’m currently experimenting with user defined functions in drill but >>>> I’m >>>>>>>> not able to get them to work on my drillbits. >>>>>>>> I always get the error: Error: VALIDATION ERROR: From line 1, >> column 8 >>>>>> to >>>>>>>> line 1, column 41: No match found for function signature >>>>>> myaddints(<ANY>, >>>>>>>> <ANY>). >>>>>>>> >>>>>>>> I already went through all the tips I found in the mailing list. >>>>>>>> The jar contains a drill-module.conf with the content: >>>>>>>> drill.classpath.scanning.packages += "org.julian" >>>>>>>> And the UDF is defined as: >>>>>>>> package org.julian; >>>>>>>> >>>>>>>> import ... >>>>>>>> >>>>>>>> @FunctionTemplate(name = „myaddints", scope = >>>>>>>> FunctionTemplate.FunctionScope.SIMPLE, nulls = >>>>>>>> FunctionTemplate.NullHandling.NULL_IF_NULL) >>>>>>>> public class IntIntAdd implements DrillSimpleFunc { >>>>>>>> >>>>>>>> @Param >>>>>>>> IntHolder in1; >>>>>>>> >>>>>>>> @Param >>>>>>>> IntHolder in2; >>>>>>>> >>>>>>>> @Output >>>>>>>> IntHolder out; >>>>>>>> >>>>>>>> public void setup() {}; >>>>>>>> >>>>>>>> public void eval() { >>>>>>>> out.value = in1.value + in2.value; >>>>>>>> } >>>>>>>> >>>>>>>> } >>>>>>>> I tried to find the bug using the logs and encountered the following >>>>>>>> messages from the drillbit.log: >>>>>>>> Base Configuration: >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-common-1.6.0.jar!/drill-default.conf >>>>>>>> >>>>>>>> Intermediate Configuration and Plugin files, in order of precedence: >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-gis-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-logical-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-kudu-storage-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/3rdparty/drill-memory-base-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-hive-exec-shaded-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-memory-base-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-mongo-storage-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-java-exec-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-common-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-storage-hbase-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-jdbc-storage-1.6.0.jar!/drill-module.conf >>>>>>>> - >>>>>>>> >>>>>> >>>> >> jar:file:/usr/local/Cellar/apache-drill/1.6.0/libexec/jars/drill-storage-hive-core-1.6.0.jar!/drill-module.conf >>>>>>>> >>>>>>>> which let’s me think that my jar file (drillUDF-1.0-SNAPSHOT.jar) is >>>> not >>>>>>>> scanned altough it is located in jars/3rdparty. >>>>>>>> >>>>>>>> Am I doing something wrong or am I missing something or has anyone a >>>>>> good >>>>>>>> hint for me? >>>>>>>> >>>>>>>> Thank you already! >>>>>>>> Julian >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> Abdelhakim Deneche >>>>>>> >>>>>>> Software Engineer >>>>>>> >>>>>>> <http://www.mapr.com/> >>>>>>> >>>>>>> >>>>>>> Now Available - Free Hadoop On-Demand Training >>>>>>> < >>>>>> >>>> >> http://www.mapr.com/training?utm_source=Email&utm_medium=Signature&utm_campaign=Free%20available >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Abdelhakim Deneche >>>>>> >>>>>> Software Engineer >>>>>> >>>>>> <http://www.mapr.com/> >>>>>> >>>>>> >>>>>> Now Available - Free Hadoop On-Demand Training >>>>>> < >>>>>> >>>> >> http://www.mapr.com/training?utm_source=Email&utm_medium=Signature&utm_campaign=Free%20available >>>>>>> >>>>>> >>>> >>>> >> >> > > > -- > > Abdelhakim Deneche > > Software Engineer > > <http://www.mapr.com/> > > > Now Available - Free Hadoop On-Demand Training > <http://www.mapr.com/training?utm_source=Email&utm_medium=Signature&utm_campaign=Free%20available>