Thus far, I've been able to create Hive UDFs, but now I need to define them within a Java package name (as opposed to the "default" Java package as I had been doing), but once I do that, I'm no longer able to load them into Hive.
First off, this works: add jar /usr/lib/hive/lib/hive-contrib-0.10.0-cdh4.3.0.jar; create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence'; Then I took the source code for UDFRowSequence.java from http://svn.apache.org/repos/asf/hive/trunk/contrib/src/java/org/apache/hadoop/hive/contrib/udf/UDFRowSequence.java and renamed the file and the class inside to UDFRowSequence2.java I compile and deploy it with: javac -cp /usr/lib/hive/lib/hive-exec-0.10.0-cdh4.3.0.jar:/usr/lib/hadoop/hadoop-common.jar UDFRowSequence2.java jar cvf UDFRowSequence2.jar UDFRowSequence2.class sudo cp UDFRowSequence2.jar /usr/local/lib But in Hive, I get the following: hive> add jar /usr/local/lib/UDFRowSequence2.jar; Added /usr/local/lib/UDFRowSequence2.jar to class path Added resource: /usr/local/lib/UDFRowSequence2.jar hive> create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence2'; FAILED: Class org.apache.hadoop.hive.contrib.udf.UDFRowSequence2 not found FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask But if I comment out the package line in UDFRowSequence2.java (to put the UDF into the default Java package), it works: hive> add jar /usr/local/lib/UDFRowSequence2.jar; Added /usr/local/lib/UDFRowSequence2.jar to class path Added resource: /usr/local/lib/UDFRowSequence2.jar hive> create temporary function row_sequence as 'UDFRowSequence2'; OK Time taken: 0.383 seconds What am I doing wrong? I have a feeling it's something simple.