Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java (revision 1165244) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBridge.java (working copy) @@ -60,6 +60,11 @@ Class udfClass; /** + * The underlying UDF class Name. + */ + String udfClassName; + + /** * Greate a new GenericUDFBridge object. * * @param udfName @@ -72,6 +77,7 @@ this.udfName = udfName; this.isOperator = isOperator; this.udfClass = udfClass; + this.udfClassName = udfClass != null ? udfClass.getName() : null; } // For Java serialization only @@ -86,6 +92,14 @@ return udfName; } + public String getUdfClassName() { + return udfClassName; + } + + public void setUdfClassName(String udfClassName) { + this.udfClassName = udfClassName; + } + public boolean isOperator() { return isOperator; } @@ -123,6 +137,11 @@ @Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { + if (udfClass == null) { + throw new UDFArgumentException( + "The UDF implementation class '" + udfClassName + + "' is not present in the class path"); + } udf = (UDF) ReflectionUtils.newInstance(udfClass, null); // Resolve for the method based on argument types