注册Java sparkSQL用户定义函数
我已经编写了一个JavaSparkSQLUDF,如下所示注册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
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,您能在这个问题上提供帮助吗