注册Java sparkSQL用户定义函数

时间:2018-05-16 04:00:18

标签: java apache-spark apache-spark-sql user-defined-functions

我编写了一个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(&#34; LowerCaseUDF&#34;,调用),它会抛出异常&#34;错误:notfound:value call&#34;

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

1 个答案:

答案 0 :(得分:0)

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

test = { {1}, {{4,5},{2,{0,3}}} }

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

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

这将为您提供如下输出:

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

我希望它有所帮助!