Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
注册Java sparkSQL用户定义函数_Java_Apache Spark_Apache Spark Sql_User Defined Functions - Fatal编程技术网

注册Java sparkSQL用户定义函数

注册Java sparkSQL用户定义函数,java,apache-spark,apache-spark-sql,user-defined-functions,Java,Apache Spark,Apache Spark Sql,User Defined Functions,我已经编写了一个JavaSparkSQLUDF,如下所示 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=""; ou

我已经编写了一个JavaSparkSQLUDF,如下所示

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;
    }
}
import org.apache.spark.sql.api.java.UDF1;
公共类小写\ UDF实现UDF1
{
@凌驾
公共字符串调用(字符串t1)引发异常
{   
字符串输出=”;
output=t1.toLowerCase();
返回输出;
}
}
在spark中注册此功能的过程是什么? 如果我运行sqlContext.udf.register(“LowerCaseUDF”,call),它会抛出一个异常“error:notfound:value call”


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

要使用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 |
+--------+-------+
这将为您提供如下输出:

dataset.withColumn("lower", functions.callUDF("lowercase_udf", functions.col("value")));
+--------+-------+
|value   |lower  |
+--------+-------+
|Michael |michael|
|Andy    |andy   |
|Justin  |justin |
+--------+-------+

我希望有帮助

答案是否解决了您的疑问?另请参见:@himanshullTian,您能在这个问题上提供帮助吗