注册 Java sparkSQL 用户定义函数

Posted

技术标签:

【中文标题】注册 Java sparkSQL 用户定义函数【英文标题】:Registering a Java sparkSQL User defined function 【发布时间】:2018-05-16 04:00:17 【问题描述】:

我编写了一个 Java Spark SQL UDF,如下所示。

import org.apache.spark.sql.api.java.UDF1;
public class LowerCase_UDF implements UDF1<String,String> 

    @Override
    public String call(String t1) throws Exception 
       
        String output="";
        output=t1.toLowerCase();
        return output;
    

在spark中注册这个函数的流程是什么? 如果我运行 sqlContext.udf.register("LowerCaseUDF", call),它会抛出异常“error: notfound: value call”

我已将生成的 jar 文件添加到 spark-client/lib 文件夹中。但这似乎不起作用。出于某些原因,我们希望该函数使用 Java。对此的任何帮助将不胜感激。谢谢

【问题讨论】:

答案能解决您的问题吗? 另见:Spark (2.3+) Java functions callable from PySpark/Python 【参考方案1】:

要使用 Java 在 Spark SQL 中注册 UDF,可以使用以下代码:

sparkSession.udf().register("lowercase_udf", new LowerCase_UDF(), DataTypes.StringType);

然后你可以像这样使用它:

dataset.withColumn("lower", functions.callUDF("lowercase_udf", functions.col("value")));

这会给你这样的输出:

+--------+-------+
|value   |lower  |
+--------+-------+
|Michael |michael|
|Andy    |andy   |
|Justin  |justin |
+--------+-------+

希望对你有帮助!

【讨论】:

@himanshullTian,你能帮忙解决这个问题吗***.com/questions/55332897/…

以上是关于注册 Java sparkSQL 用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章

Spark(十八)SparkSQL的自定义函数UDF

Spark学习之路 (十九)SparkSQL的自定义函数UDF

Spark学习之路 (十九)SparkSQL的自定义函数UDF[转]

Spark篇---SparkSQL中自定义UDF和UDAF,开窗函数的应用

如何在 Spark SQL 中定义和使用用户定义的聚合函数?

sp_executesql vs 用户定义的标量函数