Drop Impala UDF function returned NoSuchObjectException error

Drop Impala UDF function returned NoSuchObjectException error

Impala UDF works a bit differently than Hive UDF, as they are written in different languages. Recently I have encountered an issue that when I try to drop Impala UDF written in C, it failed with below error:
DROP FUNCTION udf_testing.has_vowels;
Query: DROP FUNCTION udf_testing.has_vowels
ERROR:
ImpalaRuntimeException: Error making 'dropFunction' RPC to Hive Metastore:
CAUSED BY: NoSuchObjectException: Function has_vowels does not exist
The “SHOW CREATE FUNCTION” query worked OK as below:
SHOW CREATE FUNCTION has_vowels;
Query: SHOW CREATE FUNCTION has_vowels
+-----------------------------------------------------------------------------+
| result                                                                      |
+-----------------------------------------------------------------------------+
| CREATE FUNCTION udf_testing.has_vowels(STRING)                              |
|  RETURNS BOOLEAN                                                            |
|  LOCATION 'hdfs://nameservice1/user/hive/impala-udf/libudfsample.so'        |
|  SYMBOL='_Z9HasVowelsPN10impala_udf15FunctionContextERKNS_9StringValE'      |
|                                                                             |
+-----------------------------------------------------------------------------+
Fetched 1 row(s) in 0.03s
After researching, it turned out that when dropping functions in Impala, you will also need to specify the function parameters. So below query will work:
DROP FUNCTION udf_testing.has_vowels(STRING);
Query: DROP FUNCTION udf_testing.has_vowels(STRING)
This is not immediately obvious, but it is documented on Cloudera’ offical documentation site: DROP FUNCTION Statement. Hope above helps.

One comment

Leave a Reply

Your email address will not be published.

My new Snowflake Blog is now live. I will not be updating this blog anymore but will continue with new contents in the Snowflake world!