我想注册一个UDAF类(用Scala或Python编写)并在Spark SQL中使用它。
例如:
模拟代码
// mock code:
class MyUDAF extends UserDefinedAggregateFunction{
...
}
spark.udaf.registerJavaFunction("myagg", "MyUDAF",IntegerType)
然后我可以直接在 spark sql 中使用 udaf,如下所示:
spark.sql("select myagg(field) from mytable group by something")
Spark 只提供了 spark.udf.registerJavaFunction 方法来注册 UDF 类。
有人知道如何注册UDAF?
您可以使用Hive SQL注册它。
spark.sql("CREATE FUNCTION myagg AS 'com.mysite.MyUDAF'")
spark.sql("select myagg(field) from mytable group by something")
你可以对 udaf 做同样的事情:
spark.udf.register("udaf_name", new UdafClass())
然后你可以在Spark SQL中使用它。