可以通过执行以下 SQL 取消注册 udf。
spark.sql("drop temporary function isNumeric")
下面的代码片段显示了创建 UDF 和删除 UDF。
scala> spark.udf.register("test", (value: String) => value.toInt)
res16: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,IntegerType,Some(List(StringType)))
scala> spark.catalog.listFunctions.filter(_.name == "test").collect
res17: Array[org.apache.spark.sql.catalog.Function] = Array(Function[name='test', className='null', isTemporary='true'])
scala> spark.sql("drop temporary function test")
res18: org.apache.spark.sql.DataFrame = []
scala> spark.catalog.listFunctions.filter(_.name == "test").collect
res19: Array[org.apache.spark.sql.catalog.Function] = Array()
火花 1.6v:
scala> sqlContext.sql("drop temporary function test")
{"level": "INFO ", "timestamp": "2017-06-09 05:43:44,650", "classname": "hive.ql.parse.ParseDriver", "body": "Parsing command: drop temporary function test"}
{"level": "INFO ", "timestamp": "2017-06-09 05:43:44,650", "classname": "hive.ql.parse.ParseDriver", "body": "Parse Completed"}
{"level": "INFO ", "timestamp": "2017-06-09 05:43:44,655", "classname": "hive.ql.parse.ParseDriver", "body": "Parsing command: drop temporary function test"}
{"level": "INFO ", "timestamp": "2017-06-09 05:43:44,656", "classname": "hive.ql.parse.ParseDriver", "body": "Parse Completed"}
res7: org.apache.spark.sql.DataFrame = [result: string]